从多处理池函数返回值
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
我想 运行 使用池并行循环,并将函数 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