如何在python GUI应用程序中创建线程?

时间:2014-02-17 08:47:25

标签: python multithreading user-interface

如果应用程序必须在某个时刻读取大文件,那么在python GUI应用程序中使用线程的最正确方法是什么?可能有2个线程,1个用于GUI,1个用于读取文件。 我应该在应用程序启动时创建线程,还是应该在必须读取文件时创建“文件读取”线程?

1 个答案:

答案 0 :(得分:1)

问题很模糊,因为你应该准确指出你所指的gui库。

在大多数GUI中,我知道主要的设计是只有一个线程(主线程)应该处理GUI,因此其他线程永远不会直接与用户界面交互是很重要的。通常允许您从另一个线程执行的唯一操作是post - 为主GUI循环发送消息。

例如,如果您需要进度,则在主线程中打开进度窗口,启动读取器线程,在读取过程中不断发布消息,然后在过程完成后再发送最终消息。在处理这些发布的(异步)消息时,应该在主线程中完成与接口的任何交互。

例如,如果你还需要实现一个取消按钮,那么主线程应该只为工作线程设置一个变量来注意(对于一个简单的变量赋值,Python中不需要互斥保护,因为赋值是一个原子操作)。