如何提高遍历pocoUI树的效率
工作中经常碰到需要遍历pocoUI树的情况。不同的写法差别很大,写个博客记录一下。
poco的实例,存储了整个项目的UI树,体积可能非常大。
以我手头的项目为例,其完整的UI树,以字典形式存在txt文本里,容量高达272k。

poco树中的各种控件都有其属性,下面就以这个“UICarmeraRoot”对象为例进行各种写法的效率比对。
在对该poco实例进行操作前,先简单对其遍历一遍,看看耗时多少。
可知:遍历一个272k的字典,python只需要0.48秒。
1.offspring()
查询UI树里,最偷懒的写法就是直接生成一个全树的实例,然后取其所有后代,再在其后代中逐个查找符合条件的属性对应的对象。
示例代码为:
uioffspring=poco("UIRoot(Clone)").offspring()
for x in uioffspring:
if x.attr("name") == 'UICameraRoot':
print(x.get_text())
print('查找控件过程结束')
break
else :
print

本文探讨了遍历大型PocoUI树的三种方法:offspring()、offspring()指定参数和freeze。通过实例对比,发现offspring()全树遍历耗时144秒,而使用offspring()指定参数和freeze方法可显著提升效率,达到4.8秒左右。然而,freeze方法创建的是静态副本,不支持实时更新,需注意内存管理和适时刷新。
2729

被折叠的 条评论
为什么被折叠?



