我是IPython的新手,想在运行IPython并行集群函数时将中间结果打印到标准输出。 (我知道使用多个进程可能会破坏输出,但这没关系--这只是为了测试/调试,并且我要运行的进程足够长,不太可能发生这样的冲突。) 我查看了IPython的文档,但找不到并行化函数打印输出的示例。 基本上,我正在寻找一种将子进程的打印输出重定向到主stdout的方法,这是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中的打印语句从未打印,即使所有进程都返回也是如此。 我做错了什么?我该如何让“print”起作用?
for out in asyncresult.stdout: print out
即可,您可以在任何时候执行此操作,即使输出是部分的。 - minrk