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

问题描述:

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

+1

无论你是最有信心。请记住,其他线程无法访问大多数GUI库。尝试从另一个线程访问GUI功能会导致GUI崩溃。然而,你可以围绕做它的其他方式,图形用户界面可以很容易地访问其他线程的任何数据只要你确保锁定变量等使用它们 – Torxed

的问题是相当模糊,你或许应该准确地指定到GUI库your're参考。

在大多数的GUI我知道但是主要的设计是只有一个线程(主线程)应该处理GUI,因此其他线程从不直接与用户交互的界面是非常重要的。通常您允许从不同线程执行的唯一一件事是post-这是主GUI循环的消息。

例如,如果你需要再进步在主线程中打开进度窗口,开始读线程,保持张贴信息的阅读所得,然后,在最后一次消息的程序就完成了。处理这些发布(异步)消息时,应该在主线程中完成与接口的任何交互。

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

+0

你知道如何创建点播线程(在需要时)在Python? – alwbtc

+0

@alwbtc:Python具有'thread'低级模块或'threading'高级模块。使用线程只需要'thread.start_new_thread(read_function,(filename,))',其中'def read_function(filename):...'将在单独的线程中执行。对于更复杂的交互,如果你需要互斥,那么使用'threading'可能是更好的路径。 – 6502