私が書いたいくつかのコードをデバッグしようとしています。これには多くの並列処理が含まれています。 sys.stdout
への出力といくつかのメッセージが2回印刷されるという望ましくない動作をします。デバッグ目的のために、特定の点でsys.stdout
がフラッシュされたかどうかを知ることは非常に便利です。これが可能かどうか、どうすればいいのだろうか?sys.stdoutがPythonでフラッシュされたかどうかを確認する方法
ps。私はそれが重要かどうかわかりませんが、OS Xを使用しています(少なくともsys
コマンドはオペレーティングシステムによって異なります)。
フラッシュされているかどうかにかかわらず、sys.stdoutはプロセス間の保証された順序付けを提供しません(同じプロセス内のスレッド間でさえも)。正確なタイムスタンプとログメッセージをそれぞれ別々に追加するのはなぜですか?また、すべてがスレッドセーフかプロセス間キュー経由でデバッグメッセージを送信するのはなぜですか? – James
問題は、同じ出力が2回発生するため、タイムスタンプe.t.cを追加することです。本当に助けにならないでしょう。また、sys.stdoutを何かカスタムに変更しても、実際にはバッファーに問題があるので役に立ちません。私が関連するすべてのPythonプロセスを-uフラグで起動すると、問題は発生しません。私はちょうど何か起こった後にいつもフラッシュするのではなく、何が起こっているのかを知りたいのですが、それは問題の中核を理解することなくちょっとした回避策になるからです。 – koffie