![](/img/trans.png)
[英]How to run progress bar widget from dask.distributed in a separate thread?
[英]Responsive IPython notebook with running progress bar of dask/distributed
我正在使用dask.distributed
運行集群。 目前,我使用用作GUI的Jupyter Notebook將任務提交到群集。
各個筆記本單元包含以下代碼。
%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
返回帶有作業標識符的字符串。 jobs.start_job
返回一個distributed.client.Future
的jobs.start_job
列表。 這項工作的最終結果是一份報告,其中包含一些數字和PDF圖形。
現在,我想實現一個作業隊列,其中帶有一些指示,指示當前正在處理什么以及正在等待什么。
我的目標是實施以下方案。
我們團隊的成員為新作業准備一些數據,然后在瀏覽器中打開Jupyter筆記本,在對add_new_job
的調用中的單元格中輸入作業參數,然后執行該單元格,然后關閉該頁面並等待計算完成。 他還可以打開頁面並觀察進度。
到目前為止,我發現如果我通過一次運行單元並等待一切完成而將單個作業提交給集群,那么一切都會像超級按鈕一樣工作。
如果我嘗試通過簡單地編輯單元代碼並再次運行它來提交另一個作業,則集群將停止計算第一個提交的作業。 我對此的解釋是r
被刪除,並且它的析構函數將取消請求發送到集群。
如果我嘗試通過制作筆記本的副本來提交新工作,則會在瀏覽器中打開一個新的空白頁面,然后需要很長時間才能加載筆記本並允許用戶執行任何操作。
同樣,進度條(由progress
顯示)通常會自行消失。
我已經閱讀過有關JupyterHub的文章,但目前在我看來,使用它就像是一架帶有重型火炮的射擊麻雀,應該有更簡單的方法。
我對此的解釋是r被刪除並且其析構函數將取消請求發送到集群
這是對的。 避免這種情況的一種簡單方法是將r
添加到每次運行單元時都不會刪除的某些結果集中
-- cell 1 --
results = []
-- cell 2 --
import jobs
jobid = jobs.add_new_job(...)
r = jobs.start_job(jobid)
results.append(r)
progress(r)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.