具有 运行 进度条 dask/distributed 的响应式 IPython 笔记本
Responsive IPython notebook with running progress bar of dask/distributed
我是 运行 与 dask.distributed
的集群。目前,我使用用作 GUI 的 Jupyter 笔记本向集群提交任务。
相应的笔记本单元包含以下代码。
%pylab inline
%load_ext autoreload
%autoreload 2
from distributed import progress
sys.path.append('/path/to/my/python/modules/on/NAS')
import jobs
jobid = jobs.add_new_job(...)
r = jobs.start_job(jobid)
progress(r)
jobs
是我的 python 模块的名称。 jobs.add_new_job
returns 带有作业标识符的字符串。 jobs.start_job
returns distributed.client.Future
列表。这项工作的最终结果是一份包含一些数字和一些 PDF 图表的报告。
现在我想实现一个作业队列,其中包含一些关于正在处理什么和正在等待什么的指示。
我的目标是实现以下场景。
我的团队成员为一项新工作准备了一些数据,然后在他的浏览器中打开 Jupyter notebook,在调用 add_new_job
的单元格中输入工作参数,然后执行该单元格,然后关闭该页面并等待计算完成。他也可以让页面保持打开状态并观察进度。
到目前为止,我发现如果我通过 运行 单元将单个作业提交到集群一次并等待所有事情完成,一切都很好。
如果我尝试通过简单地编辑单元格代码并再次 运行 来提交另一个作业,那么集群将停止计算第一个提交的作业。我对此的解释是 r
被删除,其析构函数向集群发送取消请求。
如果我尝试通过制作笔记本的副本来提交新作业,则会在浏览器中打开一个新的空白页面,然后需要很长时间才能加载笔记本并允许用户执行任何操作。
此外,progress
显示的进度条经常会自行消失。
我已经阅读过有关 JupyterHub 的资料,但目前在我看来,使用它就像是用重炮射击麻雀,应该有更简单的方法。
My explanation of this is that r is deleted and its destructor sends cancellation requests to the cluster
这是正确的。避免这种情况的一个简单方法是将 r
添加到某个结果集中,每次您 运行 您的单元格
时都不会删除该结果集
-- cell 1 --
results = []
-- cell 2 --
import jobs
jobid = jobs.add_new_job(...)
r = jobs.start_job(jobid)
results.append(r)
progress(r)
我是 运行 与 dask.distributed
的集群。目前,我使用用作 GUI 的 Jupyter 笔记本向集群提交任务。
相应的笔记本单元包含以下代码。
%pylab inline
%load_ext autoreload
%autoreload 2
from distributed import progress
sys.path.append('/path/to/my/python/modules/on/NAS')
import jobs
jobid = jobs.add_new_job(...)
r = jobs.start_job(jobid)
progress(r)
jobs
是我的 python 模块的名称。 jobs.add_new_job
returns 带有作业标识符的字符串。 jobs.start_job
returns distributed.client.Future
列表。这项工作的最终结果是一份包含一些数字和一些 PDF 图表的报告。
现在我想实现一个作业队列,其中包含一些关于正在处理什么和正在等待什么的指示。
我的目标是实现以下场景。
我的团队成员为一项新工作准备了一些数据,然后在他的浏览器中打开 Jupyter notebook,在调用 add_new_job
的单元格中输入工作参数,然后执行该单元格,然后关闭该页面并等待计算完成。他也可以让页面保持打开状态并观察进度。
到目前为止,我发现如果我通过 运行 单元将单个作业提交到集群一次并等待所有事情完成,一切都很好。
如果我尝试通过简单地编辑单元格代码并再次 运行 来提交另一个作业,那么集群将停止计算第一个提交的作业。我对此的解释是 r
被删除,其析构函数向集群发送取消请求。
如果我尝试通过制作笔记本的副本来提交新作业,则会在浏览器中打开一个新的空白页面,然后需要很长时间才能加载笔记本并允许用户执行任何操作。
此外,progress
显示的进度条经常会自行消失。
我已经阅读过有关 JupyterHub 的资料,但目前在我看来,使用它就像是用重炮射击麻雀,应该有更简单的方法。
My explanation of this is that r is deleted and its destructor sends cancellation requests to the cluster
这是正确的。避免这种情况的一个简单方法是将 r
添加到某个结果集中,每次您 运行 您的单元格
-- cell 1 --
results = []
-- cell 2 --
import jobs
jobid = jobs.add_new_job(...)
r = jobs.start_job(jobid)
results.append(r)
progress(r)