2016-09-28 8 views
0

dask.distributed으로 클러스터를 실행 중입니다. 현재 GUI로 사용하는 Jupyter 노트북으로 작업을 클러스터에 제출합니다.dask/distributed 진행 막대가있는 응답 성 IPython 노트북

각 노트북 셀에는 다음 코드가 들어 있습니다.

%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은 내 파이썬 모듈의 이름입니다. jobs.add_new_job은 작업 식별자가있는 문자열을 반환합니다. jobs.start_jobdistributed.client.Future의 목록을 반환합니다. 작업의 최종 결과는 PDF의 일부 숫자와 일부 플롯이 포함 된 보고서입니다.

이제 처리중인 내용과 대기중인 내용에 대한 작업 표시 줄을 구현하고 싶습니다.

제 목표는 다음 시나리오를 구현하는 것입니다.

내 팀원은 새 작업에 대한 데이터를 준비하고 브라우저에서 Jupyter 노트북을 열고 add_new_job으로 전화하여 셀에 작업 매개 변수를 입력 한 다음이 셀을 실행 한 다음 계산을 완료 할 때까지 대기합니다. 끝난. 그는 또한 페이지를 열어두고 진행 상황을 관찰 할 수 있습니다.

지금까지 셀을 한 번 실행하고 모든 것이 완료 될 때까지 대기함으로써 클러스터에 단일 작업을 제출하면 모든 것이 매력처럼 작동한다는 것을 발견했습니다.

단순히 셀 코드를 편집하여 다시 실행하면 하나의 작업을 더 제출하려고하면 클러스터가 먼저 제출 된 작업을 계산하지 않습니다. 내 설명은 r이 삭제되고 소멸자가 취소 요청을 클러스터에 보냅니다.

노트북을 복사하여 새 작업을 제출하려고하면 브라우저에 빈 페이지가 새로 열리고 노트북이로드되어 사용자가 아무 것도 할 수 없을 때까지 시간이 오래 걸립니다.

또한 진행률 표시 줄은 progress으로 표시되며 매우 자주 사라집니다.

나는 JupyterHub에 관해 이미 읽었지만, 현재는 그것을 사용하는 것이 무거운 포병이있는 총 참새 같아서 더 간단한 방법이 있어야한다고 생각합니다. 이것의

답변

1

내 설명은 r은 삭제됩니다하고 소멸자는 클러스터

이 올바른지에 취소 요청을 보냅니다. 이를 방지하는 간단한 방법은 당신이 당신의 세포

-- cell 1 -- 

results = [] 

-- cell 2 -- 

import jobs 
jobid = jobs.add_new_job(...) 
r = jobs.start_job(jobid) 
results.append(r) 
progress(r) 
+0

감사를 실행할 때마다 삭제되지 않습니다 일부 결과 집합에 r를 추가하는 것입니다. 그러면 노트북이 작업 대기열 관리자가됩니까? – wl2776