我是IPython的新手,并希望在运行IPython并行集群函数时将中间结果打印到标准输出。 (我知道有了多个进程,这可能会破坏输出,但这很好 - 它只是用于测试/调试,而且我将运行的进程足够长,以至于不会发生这样的冲突。)我检查了IPython的文档,但找不到并行化函数打印的示例。 基本上,我正在寻找一种方法来子过程的打印输出重定向到主标准输出,IPython的等效打印到IPython并行进程中的标准输出
subprocess.Popen(... , stdout=...)
印刷的过程中不起作用:
rc = Client()
dview = rc()
def ff(x):
print(x)
return x**2
sync = dview.map_sync(ff,[1,2,3,4])
print('sync res=%s'%repr(sync))
async = dview.map_async(ff,[1,2,3,4])
print('async res=%s'%repr(async))
print(async.display_outputs())
返回
sync res=[1, 4, 9, 16]
async res=[1, 4, 9, 16]
所以计算正确执行,但在功能FF打印语句永远不会打印,即使在所有进程都returne d。 我在做什么错?如何获得“打印”功能?
非常有帮助的回答。有没有办法在计算发生时看到标准输出? – spencerlyon2 2013-08-22 18:44:30
是 - 对于打印语句,只需执行'asyncresult.stdout:print out'输出,即使输出是部分输出,也可以随时执行。 – minrk 2013-08-23 07:35:05
有没有办法实现这一点,而无需访问源代码?有一个我正在使用的库在线程中打印日志消息,我希望它在打印时运行。我需要扩展一个IPython的类来做到这一点吗? – hgcrpd 2014-03-05 07:30:57