我正在尝试使用wxpython开发一个gui,它有3-4个笔记本电脑面板,其中一个面板(主面板)调用另一个名为abc.py的python脚本。在这个abc.py中,我同时运行了几个(> 10个)线程。当我点击主面板上的运行按钮时,它会启动这些abc.py脚本的同步线程。 我在这里遇到的问题是我的wxpython笔记本在以下时间之间挂断:"当我点击运行按钮时,所有线程都被加入"。在此期间,我无法控制面板上的其他按钮,也无法在面板之间切换。这段时间我的窗户被冻结了。 可能是什么问题呢?如果有人能引导我走上正确的道路来避免这个问题,那么我将非常感激。谢谢.. !!!
答案 0 :(得分:1)
您还需要将调用包装到abc.py
(我假设为popen
)到一个线程,否则GUI将被阻止。当外部脚本中的进程收集其答案时,您必须以线程安全的方式(重要!)将其恢复到wxPython
。
更好的方法是从abc.py
导入,如果可能的话,在长时间运行的线程中旋转导入的对象。
有关如何回复线程安全的说明,请参阅the wxPython wiki。我个人觉得最后一个例子最容易理解和实现。