5

我正在使用一个基本的记录器在终端中跟踪我的程序正在做什么,我注意到日志有时会延迟几秒钟或几分钟,甚至无缘无故地被跳过。

这是我的日志记录设置:

import logging
logging.basicConfig(
  level=logging.WARNING,
  format='%(asctime)s %(name)s %(levelname)s %(message)s'
)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

没什么特别的,这是我使用记录器的代码示例,在按键事件之后,但在我决定处理事件之前发生了延迟:

    if event.key == "c":
        if self.mode != "clock":
            logger.info("switching to clock mode")
            self.mode = "clock"
            self.gravitons = []
            self.updateGravitonsKTree()
            self.canShuffle = False
    elif event.key == "f":
        if self.mode != "free":
            logger.info("switching to free mode")
            self.mode = "free"
            self.gravitons = []
            self.updateGravitonsKTree()
    (...)

我确定只有记录器的输出被延迟或跳过,因为我可以看到程序的其余部分正在正常且立即做出反应,所以我猜可能有一种缓冲区没有正确刷新,但我在日志记录模块的文档。

同样在这个程序中,我使用了一个 matplotlib 动画,我怀疑它与这个问题有关,但我承认我不清楚为什么会发生这种情况以及如何发生这种情况。

有人经历过同样的事情吗?有没有办法“修复”它?

4

0 回答 0