python日志记录是否在它自己的线程中运行?

时间:2012-05-03 22:07:22

标签: python multithreading logging

我发现日志记录I / O是我们程序的性能瓶颈,因此我认为将所有日志记录I / O移动到一个单独的线程。问题是我真的不知道python日志模块中发生了什么,我讨厌在python日志模块已经为我做的事情上烧掉一天的工作,否则会浪费时间由于任何其他原因。我已经阅读了Python logging documentation,我发现的对线程的唯一引用是参考从多线程应用程序的不同线程访问记录器。

python日志记录模块是否创建了一个单独的线程来处理I / O?如果没有,是否值得花时间创建一个单独的线程来处理日志记录I / O?

2 个答案:

答案 0 :(得分:2)

不,它没有。您可以在sources

中自行查看

您可以使用Logger编写自己的线程Queue类来排队新的日志记录。但是你应该看看如何在LogRecord类中生成有关当前线程的信息。

答案 1 :(得分:0)

正如mata所说,python日志记录不会在自己的线程中运行。但是,与3.2一样,它确实提供了一些工具,使得在自己的线程QueueHandler和QueueListener中运行的处理程序变得容易。在http://docs.python.org/3.3/howto/logging-cookbook.html#dealing-with-handlers-that-block

查看日志食谱中的“处理阻止处理程序”部分