从多处理池函数返回值
Posted
技术标签:
【中文标题】从多处理池函数返回值【英文标题】:Returning values from multiprocessing Pool function 【发布时间】:2021-07-19 12:14:24 【问题描述】:我想使用 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()
【问题讨论】:
【参考方案1】:因为您向func
提供了一个数组参数,并将该数组分配为数组rejects
中的单个元素。你可以使用下面的func
:
def func(i):
print("this is:",i)
rejects=i # this is where I have changed
# print (rejects)
return rejects
【讨论】:
以上是关于从多处理池函数返回值的主要内容,如果未能解决你的问题,请参考以下文章
C 语言字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )