我想附加列表Python并行处理。我编写代码如下:
from joblib import Parallel
from multiprocessing.managers import BaseManager
manager = multiprocessing.Manager()
inputs = enumerate(my_list)
lproxy = manager.list()
d = lproxy
d.append([]) #init empty list
num_cores = multiprocessing.cpu_count()
_ = Parallel(n_jobs=num_cores)(d[0].append(word) for idx, word in inputs)
然后我的并行作业返回“ NoneType”对象是不可迭代的。在上述情况下如何追加到列表? 在第二个示例中,我按如下方式测试Parallel:
from joblib import Parallel, delayed
def process(word) :
print(word)
results = Parallel(n_jobs=num_cores)(delayed(process(word)) for idx, word in inputs)
,此返回的“功能”对象不可迭代。此功能是否必须专门编写?
并行添加到列表的上帝实践是什么?
答案 0 :(得分:0)
这似乎是一种解决方案:
import multiprocessing
inputs = enumerate(my_list)
manager = multiprocessing.Manager()
lproxy = manager.list()
from joblib import Parallel, delayed
def process(word) :
lproxy.append(word)
results = Parallel(n_jobs=num_cores)(delayed(process)(word) for idx, word in inputs)
而不是提取我使用的代理列表:
l = lproxy[:]