相关疑难解决方法(0)

在IPython并行进程中打印到stdout

我是IPython的新手,想在运行IPython并行集群功能时将中间结果打印到stdout.(我知道有多个进程,这可能会破坏输出,但这很好 - 它只是用于测试/调试,而我正在运行的进程足够长,以至于不太可能发生此类冲突.)我检查了IPython的文档,但找不到并行化函数打印的示例.基本上,我正在寻找一种方法将子进程的打印输出重定向到主stdout,IPython相当于

subprocess.Popen( ... , stdout=...)
Run Code Online (Sandbox Code Playgroud)

在流程内打印不起作用:

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())
Run Code Online (Sandbox Code Playgroud)

回报

sync res=[1, 4, 9, 16]
async res=[1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)

因此计算正确执行,但函数ff中的print语句永远不会打印,即使返回所有进程也是如此.我究竟做错了什么?如何让"打印"工作?

python printing parallel-processing ipython ipython-parallel

8
推荐指数
1
解决办法
3784
查看次数