我在我的GUI中有一個函數需要一段時間才能完成,因爲它與另一個程序通訊。由於我不想在每次恢復使用GUI之前等待它完成,我想以線程的形式啓動此函數。Python中的簡單線程
我試圖做這樣的:
threading.Thread(target=self.Sweep, args=Input).start()
,但它沒有做任何事情,也不例外,沒有結果。如果我通常啓動功能正常工作
self.Sweep(Input)
我在做什麼錯在這裏?
我在我的GUI中有一個函數需要一段時間才能完成,因爲它與另一個程序通訊。由於我不想在每次恢復使用GUI之前等待它完成,我想以線程的形式啓動此函數。Python中的簡單線程
我試圖做這樣的:
threading.Thread(target=self.Sweep, args=Input).start()
,但它沒有做任何事情,也不例外,沒有結果。如果我通常啓動功能正常工作
self.Sweep(Input)
我在做什麼錯在這裏?
我不知道這是否足以解決問題,但至少,你應該讓你的ARGS
args=(Input,)
,以與「直接」呼叫匹配。
Thread()
的參數args
預計爲包含target
函數的所有參數的元組。正如你有一個參數Input
,你必須匹配這個元組來表示這個。
在我看來,像glglgl是正確的。
您應該傳遞一個元組或列表以查找「args」,例如, args=[1]
而不是args=1
。 會發生什麼是你開始你的線程,它立即死亡,因爲它試圖打開一個序列 - 參數 - 並且你傳遞了一個序列以外的東西 - 並且引發了一個異常TypeError
。
我懷疑你的日誌 - 你應該看到這個例外。
你如何確定_「結果」_?你不希望它回來,是嗎? – Eric 2013-04-24 09:41:25
不,我看到在其他程序中與 – Yui 2013-04-24 09:42:27
溝通的結果如果你在self.Sweep()中放置了一些調試打印件會發生什麼? – 2013-04-24 10:01:48