python - 为多处理 Python 绘制池图
问题描述
如何使用 python 中的多处理工具运行多个进程池,在其中异步处理 run1-3。我正在尝试分别传递(10,2,4),(55,6,8),(9,8,7)
值run1,run2,run3
?
import multiprocessing
def Numbers(number,number2,divider):
value = number * number2/divider
return value
if __name__ == "__main__":
with multiprocessing.Pool(3) as pool: # 3 processes
run1, run2, run3 = pool.map(Numbers, [(10,2,4),(55,6,8),(9,8,7)]) # map input & output
解决方案
您只需要使用 methodstarmap
而不是map
,根据文档:
就像
map()
除了迭代的元素应该是作为参数解包的迭代。因此,结果的可迭代。
[(1,2), (3, 4)]
[func(1,2), func(3,4)]
import multiprocessing
def Numbers(number,number2,divider):
value = number * number2/divider
return value
if __name__ == "__main__":
with multiprocessing.Pool(3) as pool: # 3 processes
run1, run2, run3 = pool.starmap(Numbers, [(10,2,4),(55,6,8),(9,8,7)]) # map input & output
print(run1, run2, run3)
印刷:
5.0 41.25 10.285714285714286
笔记
这是做你想做的事情的正确方法,但你不会发现对这样一个微不足道的工作函数使用多处理会提高性能;事实上,由于创建池以及将参数和结果从一个地址空间传递到另一个地址空间的开销,它会降低性能。
推荐阅读
- c# - 在 Unity 项目中的所有游戏对象中查找和替换文本
- reactjs - 泰国文化日期被转换两次
- javascript - Typescript:当我只有一个类型名称时,如何构造特定类型的对象?
- python - Matplotlib 仅更改部分标题的字体大小
- woocommerce - Woocommerce:显示免费产品的交叉价格
- web-deployment - 如何从 .js 文件中使用 Firebase 托管?
- python - ValueError:387x50165896 像素的图像尺寸太大。每个方向必须小于 2^16。
- python - 从对象列表中获取值到可读数据框中的问题
- powerbi - PowerBi 通过 concatenatex 将过滤器中的值倍数
- pandas - Pandas 错误处理 - “日期超出月份范围”