从 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. 代码运行完成后(notebook 中没有任何东西在运行),dask 创建的进程不会被杀死(客户端也不会关闭)。当我做一个顶部时,我可以看到所有这些过程仍然存在。
我在文档中看到有一个 client.close() 选项,但有趣的是,0.15.2 中不存在这样的功能。
dask 进程被杀死的唯一时间是我停止 jupyter notebook 的时候。此问题导致奇怪且不可预测的性能行为。当笔记本上没有运行代码时,进程是否会被终止或客户端关闭?