2012-07-09 129 views
0

所以這裏是我的問題 -Python線程 - 更新GUI時崩潰

我正在使用wx python創建一個python GUI應用程序。點擊進程按鈕後,會有一些文件創建/編碼在幕後進行。最初,它在工作時在GUI上凍結了一切,所以我決定在單獨的線程上執行文件創建/編碼 - 只要創建線程的方法結束,這就是蹭網 - - (相對較快)下面是實際創建線程的代碼:

for audiobook in AudioBookObjects: 
     thread.start_new(self.createSingleBook, tuple([audiobook])) 

因此,這裏是怪異的一部分 - 這是我用這個代碼讓一個線程去,光潔度和回來不結冰的GUI一臺機器上。在另一臺機器上,它會迅速拍攝兩個線程,並在終止時崩潰!有什麼改變操作系統之間線程的行爲?我使用的是相同版本的python。我絕對確信這一點。

基本上,我需要知道兩件事情:創建它們的方法結束後,python線程會發生什麼情況,以及如何構建一個不凍結的GUI,如果觸發器方法需要堅持以等待線程結束優雅!?

在此先感謝!讓我知道你是否需要更多的信息

回答

0

如果我記得正確的話,windows是否是「真正的」線程,其中Linux線程是進程。不同之處在於,普通線程共享相同的內存,進程不共享。

我猜你的程序會在win下崩潰並在linux下運行。如果我沒有弄錯,你的createSingleBook線程可能會訪問同一個對象,而這個對象似乎沒有鎖定保護。

對於真正的分支,如果沒有另外明確說明,一切都會重複。所以你會有更多的防止鎖定和競賽條件的保護。

只是我的初步猜測,任何具有更大洞察力的人都可以隨時糾正我。否則,我會建議在您嘗試操作的對象上實現鎖定。