如果应用程序必须在某个时刻读取大文件,那么在python GUI应用程序中使用线程的最正确方法是什么?可能有2个线程,1个用于GUI,1个用于读取文件。 我应该在应用程序启动时创建线程,还是应该在必须读取文件时创建“文件读取”线程?
答案 0 :(得分:1)
问题很模糊,因为你应该准确指出你所指的gui库。
在大多数GUI中,我知道主要的设计是只有一个线程(主线程)应该处理GUI,因此其他线程永远不会直接与用户界面交互是很重要的。通常允许您从另一个线程执行的唯一操作是post
- 为主GUI循环发送消息。
例如,如果您需要进度,则在主线程中打开进度窗口,启动读取器线程,在读取过程中不断发布消息,然后在过程完成后再发送最终消息。在处理这些发布的(异步)消息时,应该在主线程中完成与接口的任何交互。
例如,如果你还需要实现一个取消按钮,那么主线程应该只为工作线程设置一个变量来注意(对于一个简单的变量赋值,Python中不需要互斥保护,因为赋值是一个原子操作)。