从多处理池函数返回值

Returning values from multiprocessing Pool function

我想 运行 使用池并行循环,并将函数 return 的每个结果存储到 numpy 数组的索引中。我在这里写了一个基本功能,真正的有点复杂。即使在这个基本的中,我也没有得到想要的输出。通过在最后打印结果,我得到了 100 个包含 100 个值的不同数组,而不是一个包含 100 个值的数组。我该如何解决这个问题,或者是否有更好的方法来存储 return 值。因为我必须在 pool 之后对拒绝的平均值和标准进行计算。


from multiprocessing import Pool
import numpy as np
rejects = np.zeros(100)

def func(i):
    print("this is:",i)
    rejects[i]=i
    # print (rejects)
    return rejects




def main():

    
    l = [*range(1,100, 1)]
    pool = Pool(3)
    results=pool.map(func, l)
    pool.close()
    pool.join()
    print (results)
if __name__ == '__main__':
    main()

因为您给 func 一个数组参数,并且还将该数组指定为数组 rejects 中的单个元素。您可以使用下面的 func

def func(i):
    print("this is:",i)
    rejects=i # this is where I have changed
    # print (rejects)
    return rejects