【发布时间】:2017-05-12 18:47:50
【问题描述】:
我是 python 和多处理模块的新手。我创建了一个非常简化的版本,以提炼我的问题。问题是,在附加它们的函数/工作进程之外调用变量时,这些变量似乎没有更新。
经过研究,我认为这可能与队列有关?但是,我认为 queues 更多是关于在我认为在我的情况下不需要的进程之间共享内存,因为每个列表都可以独立附加。
from multiprocessing import Pool
def build(array):
array.append("hello")
return array
if __name__== '__main__':
x=["yo","sup"]
y=["blah", "blah"]
z=["apple","banana"]
w=["cats", "dogs"]
p=Pool(4)
p.map(build,[x,y,z,w])
p.close()
p.join()
print x, y, z, w
当我运行上面的代码时,它只是返回 x,y,z,w 作为估算值,而不在每个列表中附加“hello”,我不知道为什么。我知道如果我将 print 语句放在函数 build 的末尾,它将输出附加列表。我也意识到我可以做到以下几点:
results = p.map(build,[x,y,z,w])
print results
但是,在我的实际项目中,我需要稍后使用 x、y、z、w,并且不希望索引 results 来获取我正在寻找的列表。无论如何,对列表所做的更改可以说是在工作进程之外吗?
【问题讨论】:
标签: python-2.7 python-multiprocessing