2013-04-24 77 views
0

我在我的GUI中有一個函數需要一段時間才能完成,因爲它與另一個程序通訊。由於我不想在每次恢復使用GUI之前等待它完成,我想以線程的形式啓動此函數。Python中的簡單線程

我試圖做這樣的:

threading.Thread(target=self.Sweep, args=Input).start() 

,但它沒有做任何事情,也不例外,沒有結果。如果我通常啓動功能正常工作

self.Sweep(Input) 

我在做什麼錯在這裏?

+2

你如何確定_「結果」_?你不希望它回來,是嗎? – Eric 2013-04-24 09:41:25

+0

不,我看到在其他程序中與 – Yui 2013-04-24 09:42:27

+0

溝通的結果如果你在self.Sweep()中放置了一些調試打印件會發生什麼? – 2013-04-24 10:01:48

回答

0

我不知道這是否足以解決問題,但至少,你應該讓你的ARGS

args=(Input,) 

,以與「直接」呼叫匹配。

Thread()的參數args預計爲包含target函數的所有參數的元組。正如你有一個參數Input,你必須匹配這個元組來表示這個。

0

threading模塊的使用方式與Java相同。我想你是想用thread。試試這個:

thread.start_new_thread(someFunc,()) 

你可以得到一些幫助herethread.start_new_thread

0

在我看來,像glglgl是正確的。

您應該傳遞一個元組或列表以查找「args」,例如, args=[1]而不是args=1。 會發生什麼是你開始你的線程,它立即死亡,因爲它試圖打開一個序列 - 參數 - 並且你傳遞了一個序列以外的東西 - 並且引發了一個異常TypeError

我懷疑你的日誌 - 你應該看到這個例外。