Как исправить задержку вывода с журналированием Python? - PullRequest
0 голосов
/ 23 февраля 2019

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

Вот мои настройки ведения журнала:

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

Ничего особенного, и вот пример кода, где я использую регистратор, здесь после события нажатия клавиши, но задержки произошли до того, как я решил обработатьevents:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...