次のコードは、いくつかのスレッドを起動し、それらがすべて行われた後、結果を出力します。完了したスレッドからどのように結果を得るか?
import threading
results = [None] * 5
threads = [None] * 5
def worker(i):
results[i] = i
for i in range(5):
threads[i] = threading.Thread(target=worker, args=(i,))
threads[i].start()
# here I would like to use the results of the threads which are finished
# while others still run
for i in range(5):
threads[i].join()
# here I have the results but only when all threads are done
print(results)
をコードで述べたように、私は他の人がまだ実行されている間、終了したスレッドの結果を使用したいです。 これを行う正しい方法は何ですか?
私は単にwhile True:
ループを持っており、継続的results
に新しいエントリをチェックしたり、そのような操作のための釜イン機構が指すでしょうthreading.Thread
コールの一部として(そこにあるでしょう新しいスレッドを起動する必要がありますスレッドが完了したときのコールバック)?
'multiprocessing.pool輸入ThreadPool'から、あなたはそこからそれを取ることができます。 –
あなたはそれを列挙するかもしれませんか? –
'https://stackoverflow.com/questions/6893968/how-to-get-the-return-value-from-a-thread-in-python'あなたの答えはこちらです – Kallz