Der folgende Code beginnt ein paar Fäden und druckt das Ergebnis, nachdem sie alles getan werden:Wie erhalten Sie Ergebnisse von Threads, wenn sie abgeschlossen sind?
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)
Wie im Code erwähnt, würde Ich mag die Ergebnisse der Fäden verwenden, die fertig sind, während andere noch laufen . Was ist der richtige Weg?
Soll ich einfach einen neuen Thread beginnen, die eine while True:
Schleife haben würde und prüfen kontinuierlich für einen neuen Eintrag in results
oder gibt es einen buil-Mechanismus für solche Operationen (als Teil des threading.Thread
Anruf, der zu einem Punkt würde Rückruf wenn der Thread fertig ist)?
'von multiprocessing.pool Import ThreadPool' und Sie es von dort zu nehmen. –
Könnten Sie das aufzählen? –
'https://StackOverflow.com/Questions/6893968/How-to-get-the-return-value-from-a-thread-in-python' möglicherweise Ihre Antwort ist hier – Kallz