Как мне распараллелить рекурсивную функцию в Python?
Моя функция выглядит так:
def f(x, depth):
if x==0:
return ...
else :
return [x] + map(lambda x:f(x, depth-1), list_of_values(x))
def list_of_values(x):
# heavy compute, pure function
При попытке распараллелить ее с помощью multiprocessing.Pool.map
окна открывают бесконечное количество процессов и зависают.
Какой хороший (желательно простой) способ распараллелить его (для одной многоядерной машины)?
Вот код, который зависает:
from multiprocessing import Pool
pool = pool(processes=4)
def f(x, depth):
if x==0:
return ...
else :
return [x] + pool.map(lambda x:f(x, depth-1), list_of_values(x))
def list_of_values(x):
# heavy compute, pure function