IPython は初めてで、IPython 並列クラスター関数の実行中に中間結果を stdout に出力したいと考えています。(複数のプロセスでは、これにより出力が台無しになる可能性があることは承知していますが、それは問題ありません-テスト/デバッグのためだけであり、実行するプロセスは十分に長いため、そのような衝突はほとんどありません。) IPython のドキュメントを参照してください。ただし、並列化された関数が出力される例が見つかりません。基本的に、サブプロセスの印刷出力をメインの stdout にリダイレクトする方法を探しています。
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 ステートメントは出力されません。私は何を間違っていますか?「印刷」を機能させるにはどうすればよいですか?