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