1
我有一個模塊,導入線程並使用threading.activeCount()來確定何時完成所有線程。我最初使用標準的Python解釋器編寫我的模塊。然而,在ipython中導入我的模塊並調用依賴於threading.activeCount()的函數時,在腳本中使用我的模塊是很好的。我的功能從未返回。python和ipython threading.activeCount()
代碼:
for dev in run_list:
proc = threading.Thread(target=go, args=[dev])
proc.start()
while threading.activeCount() > 1:
time.sleep(1)
我指出,第一導入穿線時與標準解釋器和主叫threading.activeCount()中,只有1個線程進行計數:在使用時的IPython
>>> import threading
>>> threading.activeCount()
1
>>> threading.enumerate()
[<_MainThread(MainThread, started 140344324941568)>]
然而,初始計數爲2:
In [1]: import threading
In [2]: threading.activeCount()
Out[2]: 2
In [3]: threading.enumerate()
Out[3]:
[<_MainThread(MainThread, started 140674997614336)>,
<HistorySavingThread(Thread-1, started 140674935068416)>]
該模塊被各種人使用使用各種解釋器工作,所以我想知道是否有更好的方法來處理這個問題(最好還是使用線程)?
非常好,謝謝您的回覆! – siesta
我該如何檢查所有線程是否在def main中完成? 現在我有一個While循環運行,直到ActiveCount == 0 我如何檢查加入? – Steelzeh
@Steelzeh連接等線程完成。加入後,您知道該線程已完成,而未檢查其他方式。 –