监控IPython map_async的进度?

时间:2014-11-02 01:06:52

标签: python parallel-processing ipython

我想计算IPython的map_async调用函数f的次数(所以我可以监视进度)。我试图通过f打印消息来实现此目的:

from IPython.parallel import Client
from time import sleep

def f(x):
    from time import sleep
    sleep(1)
    print x
    return x**2


c = Client()
view = c[:]

parallel_result = view.map_async(f, range(10))

while not parallel_result.ready():
    sleep(.5)
    print parallel_result.stdout

结果是:

['', '']
['', '']
['', '']
[u'0\n1', u'5\n6']
[u'0\n1', u'5\n6']
[u'0\n1\n2', u'5\n6\n7']
[u'0\n1\n2', u'5\n6\n7']
[u'0\n1\n2\n3', u'5\n6\n7\n8']
[u'0\n1\n2\n3', u'5\n6\n7\n8']
[u'0\n1\n2\n3\n4\n', u'5\n6\n7\n8\n9\n']

parallel_result.stdout的输出是累积的,如果f需要运行数百万次,这就是一个问题。如何在检查后清除parallel_result.stdout以便每次检查时我只获得新的输出? (我在print语句之后尝试了parallel_result.stdout=[],但这似乎阻止了任何事情进入parallel_result.stdout)。

或者,有没有办法f增加共享计数器?提前谢谢!

0 个答案:

没有答案