Python 2.7 使用多处理池追加列表

Python 2.7 使用多处理池追加列表,python-2.7,python-multiprocessing,Python 2.7,Python Multiprocessing,我不熟悉python和多处理模块。我创建了一个非常简化的版本,它描述了我试图完成的任务,以提炼出我的问题。问题在于,在附加变量的函数/辅助进程之外调用变量时,这些变量似乎不会更新 经过研究,我认为这可能与排队有关?然而,我认为队列更多的是关于在进程之间共享内存,我认为在我的情况下不需要这些内存,因为每个列表都可以独立附加 from multiprocessing import Pool def build(array): array.append("hello") return

我不熟悉python和多处理模块。我创建了一个非常简化的版本,它描述了我试图完成的任务,以提炼出我的问题。问题在于,在附加变量的函数/辅助进程之外调用变量时,这些变量似乎不会更新

经过研究,我认为这可能与排队有关?然而,我认为队列更多的是关于在进程之间共享内存,我认为在我的情况下不需要这些内存,因为每个列表都可以独立附加

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语句放在函数构建的末尾,它将输出附加的列表。我也意识到我可以做到以下几点:

results = p.map(build,[x,y,z,w])

print results
然而,在我的实际项目中,我需要在以后使用x、y、z、w,并且不希望通过索引结果来获得我正在寻找的列表。是否要将对列表所做的更改粘贴在工作进程之外?

每个进程都有自己的内存堆,因此您的列表将复制到进程池工作进程内存中,并且仅在那里更改