我试图避免将变量冗余地传递到dataList
(例如[(1, globalDict), (2, globalDict), (3, globalDict)]
)中,而是全局使用它们。global globalDict
不是在下面的代码中这样做的解决方案。
有没有一种简单的方法可以全局访问多处理函数中的数据?
我读了下面的here:
“通讯费用高昂。 与线程之间的通信相比,进程之间的数据交换要昂贵得多。在Python中,数据在通过管道传输之前被pickle为二进制格式。因此,当任务很小时,通信开销可能非常大。为了降低额外成本,最好将任务分块分配。”
我不确定这是否适用于这里,但无论如何我想简化数据访问。
def MPfunction(data):
global globalDict
data += 1
# use globalDict
return data
if __name__ == '__main__':
pool = mp.Pool(mp.cpu_count())
try:
globalDict = {'data':1}
dataList = [0, 1, 2, 3]
data = pool.map(MPfunction, dataList, chunksize=10)
finally:
pool.close()
pool.join()
pool.terminate()
目前没有回答
相关问题 更多 >
编程相关推荐