【发布时间】:2015-07-13 23:41:32
【问题描述】:
我正在尝试在 Python 3 中进行一些多处理。尝试迭代从多处理模块通过 Pool.map() 方法传递的 dict 项时,我发现了一些奇怪的东西。
from multiprocessing.pool import Pool
def reduce(lines):
print(lines[0])
pool = Pool(processes=8)
dataset = [(1, {"foo": "bar"}), (2, {"foo": "bar"})]
print(dataset[0])
a = pool.map(reduce, dataset)
正如您在此处看到的,print(dataset[0]) 将打印:
(1, {'foo': 'bar'})
而 print(lines[0]) 将打印:
1
2
这种行为是正常的还是我错过了什么?如果我是,有没有办法绕过它?
【问题讨论】:
-
不相关:
reduce()可能会导致与functools.reduce()混淆。reduce()是 Python 2 中的内置函数。
标签: python multiprocessing python-multiprocessing