1

我尝试过登录 Python。看起来一旦一个线程创建了一个日志实例,它就不会被删除。但是,我的程序每分钟应该产生超过 100 个线程,并且每个线程都会创建自己的记录器,这可能会导致一种内存泄漏(logging.Logger垃圾收集器不会收集实例)。

谁能帮我解决这个问题,有没有办法将记录器用于多线程应用程序?

4

1 回答 1

2

在 pythonlogging模块中,记录器由一个logging.Manager实例管理。通常只有一个日志管理器,可用logging.Logger.manager. 记录器由其名称标识。每次您使用logging.getLogger('name')此调用时,都会将其转发到logging.Logger.manager.getLogger包含记录器的字典并每次返回相同的记录器'name'

因此,如果您在从线程获取记录器时不使用不同的名称,那么您实际上每次都使用相同的记录器实例,而不必担心内存泄漏。

于 2012-05-18T12:57:56.177 回答