我有一个挂起的 PyQt 应用程序。
Qt 4.7.4(64 位) Python 2.6.1 GCC 4.2.1 OSX 10.6.8
挂起的位置不同。如果我禁用/重写一个挂起位置,那么挂起不久就会发生在其他地方。
该应用程序执行可能返回数千个自定义数据对象的搜索,每个对象可能包含五十个子对象。
日志显示挂起往往发生在创建这些自定义对象的循环中。
还
该应用程序使用线程,但是即使我禁用这些线程也会发生挂起。(我正在使用Laszlo Nagy 的堆栈跟踪工具来验证这一点。即使只有主线程和堆栈跟踪线程正在运行,也会发生挂起。)
应用程序读取并创建图像文件。I/O 锁似乎不太可能是罪魁祸首,但我还没有排除它。
我想知道
我可以创建的 python 对象的数量是否有限制?
我可能会达到其他限制吗?
我没有为垃圾收集做任何明确的对象删除。我是不是该?
还有其他常见的嫌疑人吗?
编辑(8/13):
QTimer.singleShot 是一个很好的了解和热门线索——但是这个应用程序不使用singleShot。
当应用程序挂起时,它会占用 100% 的 CPU(以及大约 140 MB 的内存。)
我会尽快尝试 strace 看看它会显示什么。