簡體   English   中英

響應式IPython Notebook,具有運行進度條/分布式的進度條

[英]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.Futurejobs.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM