0

このようなものがいいでしょう:

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の偉大な人たちのアイデアはありますか?

4

1 に答える 1

0

SO の回答から: Reading the stdout of ipcluster 私は 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

誰かがより良い解決策を持っているなら、それは素晴らしいことです

于 2013-04-03T11:40:58.447 に答える