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
如果有人有更好的解决方案,那就太好了