1

ログ I/O がプログラムのパフォーマンスのボトルネックであることがわかったので、すべてのログ I/O を別のスレッドに移動することを考えています。問題は、python ロギング モジュールで何が起こっているのかよくわからないことです。python ロギング モジュールが既に行っている作業に 1 日を費やしたり、時間の無駄になるのは嫌です。その他の理由で。私はPython ロギングのドキュメントを読みましたが、私が見つけた唯一のスレッドへの参照は、マルチスレッド アプリケーションの異なるスレッドからのロガーへのアクセスに関するものです。

Python ロギング モジュールは、I/O を処理するために別のスレッドを作成しますか? そうでない場合は、ロギング I/O を処理する別のスレッドを作成する価値がありますか?

4

2 に答える 2

3

いいえ、そうではありません。ソースで自分で確認できます。

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

于 2012-05-03T22:23:20.953 に答える
0

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

于 2013-11-07T22:06:26.547 に答える