1

Pythonでログインしてみました。ログインスタンスがスレッドによって作成されると、削除されないように見えます。ただし、私のプログラムは 1 分あたり 100 を超えるスレッドを生成する必要があり、それぞれが独自のロガーを作成するため、一種のメモリ リークが発生する可能性があります (logging.Loggerインスタンスはガベージ コレクターによって収集されません)。

マルチスレッドアプリケーションにロガーを使用する方法はありますか?

4

1 に答える 1

2

Pythonloggingモジュールでは、ロガーはlogging.Managerインスタンスによって管理されます。通常、として使用できるロギングマネージャは1つだけですlogging.Logger.manager。ロガーは名前で識別されます。この呼び出しを使用するたびに、ロガーのdictを保持し、毎回同じロガーを返すlogging.getLogger('name')呼び出しが実際に転送されます。logging.Logger.manager.getLogger'name'

したがって、スレッドからロガーを取得するときに別の名前を使用しない場合は、実際には毎回同じロガーインスタンスを使用しているため、メモリリークについて心配する必要はありません。

于 2012-05-18T12:57:56.177 に答える