【问题标题】:Does the python logging run in it's own thread?python日志记录是否在它自己的线程中运行?
【发布时间】:2012-05-03 22:07:22
【问题描述】:

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

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

【问题讨论】:

    标签: python multithreading logging


    【解决方案1】:

    不,它没有。您可以在sources 中自行查看。

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

    【讨论】:

      【解决方案2】:

      正如 mata 所说,python 日志不会在自己的线程中运行。但是,与 3.2 一样,它确实提供了一些工具,可以轻松地让处理程序在自己的线程 QueueHandler 和 QueueListener 中运行。看看http://docs.python.org/3.3/howto/logging-cookbook.html#dealing-with-handlers-that-block的日志记录手册的“处理阻塞的处理程序”部分@

      【讨论】:

        猜你喜欢
        • 2021-05-10
        • 2020-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-31
        • 2013-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多