如何列出Dask正在运行的进程?

时间:2018-06-05 12:07:07

标签: python dask

我开始使用dask。为了我自己的理解(以及我想向其展示dask的同事),我想构建一个基本数据框,执行基本操作并将执行时间与仅使用pandas的实现进行比较。这是我非常简单的尝试:

import dask
import dask.multiprocessing
import dask.dataframe as dd
import pandas as pd
import time

dask.set_options(get=dask.multiprocessing.get)

start = time.time()

df = dd.from_pandas(pd.DataFrame(data={'a': list(range(10))}), npartitions=4)
df['a'].apply(lambda x: time.sleep(2))

end = time.time()

print(f'time elapsed: {end - start}')

我正在使用多处理调度程序,因为我希望在单独的shell中看到进程出现在ps aux | grep python调用中。但是,我没有看到它们。是否 - 出于演示目的 - 列出了dask正在使用的所有进程的方法?

为了记录,我确实看到了经过时间的改善。 pandas实现(此处未显示)需要20秒,而dask版本需要4秒。但是,鉴于我使用了4个分区,我预计它会占用5个分区。

1 个答案:

答案 0 :(得分:1)

如果您正在使用多处理调度程序,则Dask会在每次调用multiprocessing.Pool时创建并销毁compute

对于演示,我通常使用distributed scheduler on a single machine,其中包括一个漂亮的仪表板,其中的页面显示了流程,活动等。

$ pip install dask[complete] bokeh
or
$ conda install dask bokeh

然后

from dask.distributed import Client
client = Client()

# navigate to http://localhost:8787/status