Python如何提取multiprocessing返回值作为另一函数的输入参数
实现方案
你只需要补全代码中缺失的依赖导入,在进程池资源回收后直接传入多进程返回的结果即可,完整可运行代码如下:
import os import numpy as np from multiprocessing import Pool a = [1, 2, 3, 4, 5, 6] def func1(a): return a ** 2 def func2(a): x = np.zeros(1) for i in a: x += i return x if __name__ == "__main__": pool = Pool(os.cpu_count()) # 多进程执行得到results,返回为标准Python列表 results = pool.map(func1, a) # 回收进程池资源 pool.close() pool.join() # 直接传入results调用func2即可 final_res = func2(results) print(final_res)
相关说明
pool.map执行完成后返回的是顺序和输入一致的原生Python列表,属于标准可迭代对象,不需要做任何格式转换就能直接传入func2,完全满足你不提前转换为numpy数组的要求。- 如果实际场景中
func1返回的是自定义类型数据,只要该类型支持pickle序列化(Python multiprocessing默认跨进程通信依赖的序列化规则),都可以正常拿到结果后直接传给func2运行你的自定义逻辑,无需额外适配。
内容的提问来源于stack exchange,提问作者G-09
相关产品推荐
相关产品推荐

