python - dask 进程调度程序运行不佳
问题描述
我定义了一个 cpu-bound 函数
def countdown(n):
while n > 0:
n -= 1
在我的笔记本电脑上运行countdown(50000000)
需要 2.16 秒。
首先,我测试multiprocess
并行化。
from multiprocess import Pool
with Pool(2) as p:
l=p.map(countdown,[50000000,50000000])
需要 2.46 秒,这是一个很好的并行化。
然后,我测试dask
进程调度程序并行化
l=[dask.delayed(countdown)(50000000),dask.delayed(countdown)(50000000)]
dask.compute(l,scheduler='processes',num_workers=2)
但是,它需要 4.53 秒。这与速度相同
dask.compute(l,scheduler='threads',num_workers=2)
dask 进程调度程序有什么问题?我希望它应该与多进程相提并论
解决方案
以下工作,所以我不确定以上是错误还是功能:
from dask.distributed import Client
with Client(n_workers=2) as client:
l=[dask.delayed(countdown)(50000000),dask.delayed(countdown)(50000000)]
dask.compute(*l)
推荐阅读
- python - 我的程序中有一个我无法弄清楚的错误
- r - 将数据框 1 中的列乘以数据框 2 中的条件
- c# - C#:是否可以默认使 Enum 成员值赋值二进制而不是十进制?
- computer-vision - Yolo 高 mAP 但相当低的置信度
- laravel - 在 laravel 中动态设置 conf var
- c# - 如果在 macOS 上通过 VPN 连接,Selenium ChromeDriver 无法定位元素
- python - Python:用多个字母猜测刽子手游戏
- regex - 如何仅删除数字之间的空格?
- local-storage - localStorage 未定义 - Next.js
- php - PHP 数据获取脚本在 localhost 中工作,但不能在使用 ssl 的托管中工作