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