2012-05-03 16 views
0

I/Oのログはプログラムのパフォーマンスのボトルネックであることがわかったので、すべてのログI/Oを別のスレッドに移動することを考えています。問題は、私が実際にPythonロギングモジュールで何が起こっているのか分からず、Pythonロギングモジュールがすでに私のためにやっていることに仕事の一日を燃やすことが嫌な、あるいは時間の無駄になることですその他の理由により。私はPython logging documentationを読んでおり、見つかったスレッドへの参照は、マルチスレッドアプリケーションの異なるスレッドからロガーにアクセスすることに関してのみ参照されています。Pythonロギングは独自のスレッドで実行されますか?

PythonロギングモジュールはI/Oを処理するために別個のスレッドを作成しますか?もしそうでなければ、ロギングI/Oを処理するための別個のスレッドを作成するのは時間がかかるでしょうか?

答えて

2

いいえ、それはありません。 sourcesでご自身で確認できます。

Queueを使用して独自のスレッドLoggerクラスを作成して、新しいログレコードをキューに入れることができます。しかし、現在のスレッドに関する情報がLogRecordクラスでどのように生成されるかを調べる必要があります。

0

mataによると、Pythonのログは独自のスレッドでは実行されません。しかし、3.2のように、独自のスレッドであるQueueHandlerとQueueListenerを実行するハンドラを簡単に作成できるツールを提供しています。ロッキングクックブックの「ブロックするハンドラーを扱う」のセクションをご覧ください。http://docs.python.org/3.3/howto/logging-cookbook.html#dealing-with-handlers-that-block

関連する問題