0

Python に行がある場合:

print(message)

メッセージが常に全体として標準出力に表示されるようにする方法はありますか?

問題は、同時に stdout に書き込むことができるいくつかのサブプロセスまたは C 拡張が存在する可能性があることです。

言い換えれば、print()他の出力とインターリーブされていない stdout になることを保証する方法が必要な場合はどうすればよいですか? これは可能ですか?あることは知っていますmultiprocessing.Lockが、サブプロセスまたは拡張機能のすべてで同じロックを渡す必要がありprintます。可能かどうかはわかりません...

4

1 に答える 1

0

cPython for Python 2 では、GIL (グローバル インタープリター ロック) が通常これを処理します。

サブプロセスについては、stdout をリダイレクトして開始し、都合のよいときに報告することができます。ほとんどのライブラリ C 拡張機能は、通常、重大な問題が発生した場合にのみ stdout に出力を提供するため、問題にはなりません。

それが問題である場合 (問題が解決するまで私はあまり心配しません)、必要に応じてすべての印刷関数を Lock を使用するレポート関数に置き換えてみませんか? デフォルトの印刷をそのようなクラスに置き換えることもできます。

于 2013-10-13T10:56:08.783 に答える