2

我正在使用 python 2.7 和 wxpython 2.8 创建一个应用程序,它应该在文件列表上执行一个长循环(几个小时)。

我编写了一个按钮,当我按下它时应该会中断循环,但是在我启动应用程序的那一刻,它会冻结,并且在循环结束之前我无法以任何方式进行交互。我还尝试添加一小段睡眠时间time.sleep,最多 1 秒,这对速度非常不利,并且不能解决问题。

有没有办法“在后台”运行这个循环,这样用户仍然可以修改一些参数,更重要的是停止循环?

我可以说循环不需要很多资源,它只需要很多时间,所以我不明白为什么它会冻结。

在此先感谢您的帮助!

4

1 回答 1

1

在此类问题的标准解决方案中使用线程。进程和事件下的 wxPython 演示 | Threads 有一个使用线程的工作示例。

从 wxPython(和大多数其他 gui)运行线程时存在一些问题,因此您可能需要阅读示例中的注释,并且可能需要阅读 wiki 以了解正在发生的事情等。特别是,wxPython 需要从主线程,所以你的文件处理在不同的线程中,然后你的文件处理应该使用类似 wx.PostEvent 或 wx.CallAfter 的东西与主线程进行通信。

于 2012-09-18T03:58:29.277 回答