我是 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 中的打印语句永远不会打印,即使所有进程都已返回。我究竟做错了什么?如何让“打印”工作?