Как исправить задержку вывода с журналированием Python?

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

Вот мои настройки регистрации:

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, и я подозреваю, что это как-то связано с этой проблемой, но, признаюсь, у меня нет четкого понимания, почему и как это может иметь место.

Кто-нибудь когда-либо испытывал то же самое? И есть ли способ "починить" это?

0 ответов

Другие вопросы по тегам