我想使用pool并行运行一个循环,并将函数返回的每个结果存储到numpy数组的索引中。我在这里写了一个基本函数,实际函数有点复杂。即使在这个基本的版本中,我也没有得到想要的输出。通过在最后打印结果,我得到了100个不同的100值数组,而不是一个100值数组。我该如何解决这个问题,或者是否有更好的方法来存储返回值。因为我必须接受一个卑鄙的和标准的拒绝后池。
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