python-3.x - 通过 jupyter notebook 使用 dask 分布式计算

标签 python-3.x dask dask-distributed

我在 jupyter notebook 中使用 dask 时看到奇怪的行为。所以我启动了一个本地客户端并给它一个要做的工作列表。我的实际代码有点复杂,所以我在这里为您举一个简单的例子:

from dask.distributed import Client

def inc(x):
 return x + 1

if __name__ == '__main__':
 c = Client()
 futures = [c.submit(inc, i) for i in range(1,10)]
 result = c.gather(futures)
 print(len(result))

问题是,我意识到: 1. Dask为这个例子启动了9个以上的进程。 2.代码运行完成后(笔记本中没有任何东西在运行),dask创建的进程没有被杀死(客户端没有关闭)。当我执行 top 操作时,我可以看到所有这些进程仍然存在。

我在文档中看到有一个 client.close() 选项,但有趣的是,这样的功能在 0.15.2 中不存在。

唯一一次 dask 进程被终止是在我停止 jupyter notebook 的时候。此问题导致奇怪且不可预测的性能行为。无论如何,当笔记本上没有运行代码时,进程是否会被终止或客户端关闭?

最佳答案

默认的 Client 允许传递给 LocalCluster 的可选参数(参见 docs )并允许您指定,例如,您要处理的进程数希望。此外,它还是一个上下文管理器,它会在您完成后自行关闭并结束进程。

with Client(n_workers=2) as c:
    futures = [c.submit(inc, i) for i in range(1,10)]
    result = c.gather(futures)
    print(len(result))

当这结束时,进程将终止。

关于python-3.x - 通过 jupyter notebook 使用 dask 分布式计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163097/

相关文章:

python - 在 Python NumPy 中拉伸(stretch)图像的最有效方法

python - 如果还有其他输入意味着出了点问题,我应该如何结束if-else block ?

python - 将函数应用于 Dask : How do you specify the grouped Dataframe as argument in the function? 中的分组数据帧

pandas - 将 spark 数据帧转换为 dask 数据帧

ssh - 有没有办法通过 ssh 使用 dask jobqueue

python - 为什么在解包元组时 var 类型会发生变化?

hadoop - 如何使用 Dask 在 yarn 上运行并行化的 python 作业?

python - Dask.bag.map_partitions 函数接收生成器而不是列表

python - 将数据分散到 dask 集群工作人员 : unknown address scheme 'gateway'

python - python REPL 中没有可用的行历史记录/自动完成