Python多处理池创建重复列表
我试图弄明白多重处理,但我遇到了一些我完全不明白的事情 我正在使用pathos.multiprocessing进行更好的酸洗。下面的代码创建了一个我想要遍历的对象列表。但是,当我运行它时,它会打印几个不同的列表,尽管它引用了同一个变量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
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
非常感谢你!这是很有道理的,我相当肯定我会为我正在努力做的事情工作