2014-02-17 91 views
2

什麼是使用在Python GUI應用程序的線程,如果應用程序以讀取在某些時候一個大文件的最正確的方法是什麼?可能會有2個線程,1個用於GUI,1個用於讀取文件。 我應該在應用程序啓動時創建線程,還是在必須讀取文件時創建「文件讀取」線程?如何在python GUI應用程序中創建線程?

+1

無論你是最有信心。請記住,其他線程無法訪問大多數GUI庫。嘗試從另一個線程訪問GUI功能會導致GUI崩潰。然而,你可以圍繞做它的其他方式,圖形用戶界面可以很容易地訪問其他線程的任何數據只要你確保鎖定變量等使用它們 – Torxed

回答

1

的問題是相當模糊,你或許應該準確地指定到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

相關問題