параллельная рекурсивная функция в Python?

Как мне распараллелить рекурсивную функцию в 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
6
задан Michael J. Barber 29 August 2011 в 12:02
поделиться