Cry*_*ite 6 python optimization pyqt
对于那些编写了相当复杂的PyQt应用程序的人,您会为加速应用程序提供哪些提示和技巧?我有几个例子说明我的程序随着它变大而开始变慢的地方:
我编写了一个"仪表板",当用户点击TreeWidget中的项目时,该仪表板被销毁并重新创建.有一个模块化界面的更好方法是单击TreeWidget中的项目更改仪表板,但不需要销毁小部件并重新创建它.
每个仪表板还从网络位置加载图像.这会在应用程序中导航时产生一些减速,但在将其加载到内存后,"返回到相同的破折号"会更快.是否有一种好的方法或方法可以在程序加载时运行一个可能会将图像预先加载到内存中的方法?如果是这样,你如何实现?
如果您有大量的仪表板项目和数据加载到它们中,您是否通常将数据加载线程并加载回来,每个线程完成?当有人快速浏览时,这是否可行?是否会为线程实现kill-switch,以便当用户更改仪表板时,线程会工作?或者不断创建和杀死线程会导致某种程度的崩溃.
对于大量的问题感到抱歉,但它们似乎相似,足以将它们捆绑在一起.
我不确定这是否与您正在做的完全相同,但它听起来类似于我在某些应用程序中的内容,其中有一些自定义小部件列表.当你创建和销毁大量的小部件时,它确实显着减慢了速度.
如果它的总小部件数量较少,但只是被创建和删除很多,你只需创建一次小部件,只需要更新这些小部件的数据,因为信息需要更新...而不是创建新的小部件每次信息更改时都会显示小部件.这样,您甚至可以更改线程中的数据,而无需担心创建小部件.
另一种情况是,您正在显示包含自定义小部件的列表,并且有大量结果.我注意到当列表中有1000个自定义小部件时,它总是会变慢.我的同事提出的一个技巧就是有一个虚假的列表,它在显示器中使用静态数量的插槽.比如,它在视图中显示10个插槽.滚动条不会真正向下滚动到更多小部件...它的作用是滚动数据通过10个可见的小部件.你可以通过疯狂的性能提升.但只有当它是适合您的应用程序的显示样式时.