Parallel processing 使用Ipython.parallel,我如何监控任务的进度?
像这样的东西会很好:Parallel processing 使用Ipython.parallel,我如何监控任务的进度?,parallel-processing,monitoring,ipython,Parallel Processing,Monitoring,Ipython,像这样的东西会很好: from IPython.parallel import Client dv=Client()[0] import time def waitprogress(n): for i in range(n): time.sleep(1) global progress progress=str(i)+'/'+str(n) dv.block=False dv.apply(waitprogress,10) dv['progress'] # the
from IPython.parallel import Client
dv=Client()[0]
import time
def waitprogress(n):
for i in range(n):
time.sleep(1)
global progress
progress=str(i)+'/'+str(n)
dv.block=False
dv.apply(waitprogress,10)
dv['progress']
# the command wait 10 seconds, then returns 9/10
这不起作用,因为IPython会在远程实例中搜索进度变量之前等待dv.apply结束
有没有关于SO的好主意?来自SO的答案:
我找到了一个使用stdout的解决方案:
from IPython.parallel import Client
c=Client()
dv=c[0]
import time
def waitprogress(n):
for i in range(n):
time.sleep(1)
print str(i)+'/'+str(n)
dv.block=False
res=dv.apply(waitprogress,10)
print c.spin() or c.metadata[res.msg_ids[0]].stdout.split()[-1]
#1/10
time.sleep(3)
print c.spin() or c.metadata[res.msg_ids[0]].stdout.split()[-1]
#4/10
如果有人有更好的解决方案,那就太好了