Как в питоне вернуть из потока значение?
import sys
import threading
def f(n):
if n == 1:
return 1
else:
return n * f(n - 1)
sys.setrecursionlimit(100000)
threading.stack_size(0x2000000)
t = threading.Thread(target=f, args=(2023,))
t1 = threading.Thread(target=f, args=(2020,))
t.start()
t1.start()
# здесь необходимо вернуть значение из потока и посчитать f(2023) / f(2020)
Возможно ли это? Если да, то как это реализовать?
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Можно использовать concurrent.futures.ThreadPoolExecutor:
import sys
from concurrent.futures import ThreadPoolExecutor
pool = ThreadPoolExecutor()
def f(n):
if n == 1:
return 1
else:
return n * f(n - 1)
sys.setrecursionlimit(100000)
feature1 = pool.submit(f, 2023) # создаем поток для вычисления факториала
feature2 = pool.submit(f, 2020)
result1 = feature1.result() # забираем результат вычисления
result2 = feature2.result()
result = result1/result2
print(result)