TGViewer
Чайник из Юты Чайник из Юты @irrationalthings · 122 subscribers
Post #22 92
Представьте, что у вас есть веб-сервер. И у вас условно трафика на несколько тысяч запросов в секунду. Вы решили прямо в обработчиках запросов вкрутить принты - ну а что, логгирование так-то вещь полезная.

Представили? А теперь представьте, как вы плачете, потому что производительность упала на 20-30%.

И знаете, почему?

Да, всё верно. Питоний print достаточно медленный, чтобы его блокирующий вызов во время обработки каждого запроса по итогу дал весьма неутешительные результаты при измерениях, особенно - на фоне результатов без этих принтов. Он может отнимать целые 60 микросекунд - что очень даже много, на фоне того, что запрос без этого обрабатывается всего за 140 микросекунд. Да, принт настолько сильно может влиять на производительность, если пихать его туда, где с высокой скоростью много раз в секунду должны происходить телодвижения.

Но что же тогда делать? Как делать логгирование?! Мы все умрём??

Нет. Если вы не хотите использовать всеразличные логгеры, коих полным полно - а хотите сделать так, чтобы логгеров было полным-полно и плюс ваш - можете сделать многопоточный логгер.
Суть такого логгера состоит в том, что при условном вызове logger.info(...), вместо того, чтобы прямо в нашей функции открывать файл на чтение (или вообще не закрывать дескриптор на протяжении всей жизни процесса; но если вы так сделаете, то знайте: я вас найду), или просто выводить надпись на экран аки принт - просто при инициализации логгера, создайте отдельный поток, а в конструкторе не забудьте прописать аттрибут с очередью. Думаю, объяснять про очереди мне не нужно - сами сможете почитать про Queue (кьюеуе, оно самое). Из этой самой очереди, наш второй поток и будет брать текст, который уже и будет записываться в файл/выводиться на экран.
Поздравляю, вы сделали неблокирующий принт.
  • 👍 1
More from @irrationalthings
  1. Sep 21, 2026я хрюкнул
  2. Sep 21, 2026гемини
  3. Sep 15, 2026Тот факт, что между нейронками и компрессорами больше общего, чем может показаться - забав…
  4. Sep 15, 2026"Low-Resource" Text Classification: A Parameter-Free Classification Method with Compressor…
  5. Sep 15, 2026Конечно, они сравнивали со средненькими классифицирующими моделями. Там есть пространство…
  6. Sep 15, 2026GZIP наносит ответный удар Вот мы хотим классифицировать текст. Классическая задача для ML…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →