Python多处理池创建重复列表

Python多处理池创建重复列表,python,python-multiprocessing,Python,Python Multiprocessing,我试图弄明白多重处理,但我遇到了一些我完全不明白的事情 我正在使用pathos.multiprocessing进行更好的酸洗。下面的代码创建了一个我想要遍历的对象列表。但是,当我运行它时,它会打印几个不同的列表,尽管它引用了同一个变量 import os from pathos.multiprocessing import ProcessPool as Pool class AnyClass: def __init__(self): pass def any_functi

我试图弄明白多重处理,但我遇到了一些我完全不明白的事情

我正在使用pathos.multiprocessing进行更好的酸洗。下面的代码创建了一个我想要遍历的对象列表。但是,当我运行它时,它会打印几个不同的列表,尽管它引用了同一个变量

import os
from pathos.multiprocessing import ProcessPool as Pool


class AnyClass:
    def __init__(self):
    pass


def any_function():
    any_list = []

for i in range(0, 3):
    any_object = AnyClass()
    any_list.append(any_object)

def particular_function(_argument):
    print(any_list)

with Pool(os.cpu_count()-1) as pool:
    pool.map(particular_function, any_list)

print(any_list)


if __name__ == '__main__':
    any_function()
输出如下所示,每次都有不同的列表

[<__main__.AnyClass object at 0x7ff03da8ffd0>, <__main__.AnyClass object at 0x7ff03da9c040>, <__main__.AnyClass object at 0x7ff03da9c070>]
[<__main__.AnyClass object at 0x7ff03da9c100>, <__main__.AnyClass object at 0x7ff03da9c130>, <__main__.AnyClass object at 0x7ff03da9c160>]
[<__main__.AnyClass object at 0x7ff03da9c1f0>, <__main__.AnyClass object at 0x7ff03da9c220>, <__main__.AnyClass object at 0x7ff03da9c250>]
[<__main__.AnyClass object at 0x7ff03ac6a4f0>, <__main__.AnyClass object at 0x7ff03ac9ad60>, <__main__.AnyClass object at 0x7ff03da57af0>]
[,]
[, ]
[, ]
[, ]

我很抱歉,如果这是一个糟糕的解释或糟糕的问题,因为我是python新手,但是有没有办法解决这个问题;ie每次都有相同的列表?

使用多处理时,库会产生多个不同的进程。每个进程都有自己的地址空间。这意味着这些过程中的每一个都有自己的变量副本,一个过程中的任何更改都不会反映在其他过程中

为了使用共享内存,您需要特殊的构造来定义全局变量。对于
pathos.multiprocessing
,从注释中,似乎可以通过简单导入以下内容来声明多处理类型共享变量:

from pathos.helpers import mp as multiprocess
a = multiprocess.Array('i', 2)  # Declares an integer array of size 2

非常感谢你!这是很有道理的,我相当肯定我会为我正在努力做的事情工作