0

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

并且这个返回“函数”对象是不可迭代的。这个函数是否必须以某种方式特别编写?

并行追加到列表的神的做法是什么?

4

1 回答 1

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[:]
于 2019-04-09T09:17:09.430 回答