Как разделить переменную в библиотеке Python 'joblib'
from joblib import Parallel, delayed
def func(v):
temp.append(v)
return
temp = []
Parallel(n_jobs=4)(delayed(func)(v) for v in range(10))
print temp
Я хочу сделать переменную общей памяти. Но значение temp пусто []. Как мне это сделать?
Для другого метода я попробовал pickle.dump и загрузил. Но есть проблема блокировки. Пожалуйста, дайте мне совет!
1 ответ
from joblib import Parallel, delayed
def func(v):
return v
temp = Parallel(n_jobs=4)(delayed(func)(v) for v in range(10))
print temp
delayed
собирает выходные данные, возвращаемые func
в списке и возвращает его по завершении.
Вам нужно использовать multiprocessing.Manager.list
, например:
from joblib import Parallel, delayed
from multiprocessing import Manager
manager = Manager()
temp = manager.list()
def func(v, temp):
temp.append(v)
return
_ = Parallel(n_jobs=4)(delayed(func)(v, temp) for v in range(10))
temp[:]
:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]