2012-05-18 4 views
1

Я попытался войти в Python. Похоже, что когда экземпляр журнала создается потоком, он не будет удален. Тем не менее, моя программа должна производить более 100 потоков в минуту, и каждый будет создавать свой собственный журнал, что может привести к некоторой утечке памяти (logging.Logger экземпляры не будут собираться сборщиком мусора).Каждый поток создает свой собственный экземпляр журнала, регистрируя собственное событие

Может ли кто-нибудь помочь мне в этом, есть ли способ использовать регистратор для многопоточных приложений?

+0

Можете ли вы опубликовать код, демонстрирующий эту утечку памяти? – Kevin

ответ

2

В модуле python logging регистраторы управляются с помощью экземпляра logging.Manager. обычно есть только один менеджер регистрации, доступный как logging.Logger.manager. Регистраторы идентифицируются по их имени. Каждый раз, когда вы используете logging.getLogger('name'), этот вызов переадресован на logging.Logger.manager.getLogger, который хранит диктофон регистраторов и возвращает один и тот же регистратор для каждого 'name' каждый раз.

поэтому, если вы не используете другое имя при получении журнала из потока, вы на самом деле используете один и тот же экземпляр журнала каждый раз и не должны беспокоиться об утечке памяти.

+0

Спасибо! мата, разрешенная проблема, которая, согласно вашим рекомендациям! большое спасибо! – user1305869

Смежные вопросы