Python并行追加到代理列表中,返回“ function”对象不可迭代或“ NoneType”对象不可迭代

时间:2019-04-09 09:00:06

标签: python parallel-processing

我想附加列表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)

,此返回的“功能”对象不可迭代。此功能是否必须专门编写?

并行添加到列表的上帝实践是什么?

1 个答案:

答案 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[:]