Du kan använda queue.Queue:
import time
import threading
from queue import Queue
def def_test(queue):
time.sleep(0.5)
a = 1
queue.put(a)
if __name__ == '__main__':
threads = []
queue = Queue()
for _ in range(5):
time.sleep(0.2)
tread = threading.Thread(target=def_test, args=(queue,))
threads.append(tread)
tread.start()
for thread in threads:
thread.join()
x = sum(queue.queue)
print(x)
Men bättre ThreadPoolExecutor från modul concurrent.futures
import time
from concurrent.futures import ThreadPoolExecutor
def def_test():
time.sleep(0.5)
a = 1
return a
if __name__ == '__main__':
threads = []
number_of_threads = 5
x = 0
with ThreadPoolExecutor(max_workers=number_of_threads) as executor:
for feature in [executor.submit(def_test) for _ in range(number_of_threads)]:
x += feature.result()
print(x)