Хабы: Блог компании OTUS, Python
Привет, Хабр!
Если вам приходилось писать высоконагруженные сетевые приложения на Python, то вы, скорее всего, сталкивались с тем, что стандартные механизмы работы с вводом‑выводом — select()
, poll()
и даже asyncio
— не справляются с большой нагрузкой. select()
быстро превращается в бутылочное горлышко из‑за линейной сложности O(N), poll()
всё ещё требует перебора всех файловых дескрипторов, а asyncio, хоть и удобен, но не всегда даёт ту производительность, которую можно получить, если работать напрямую с системными вызовами.
Здесь, на мой взгляд хорошо подойдет epoll
— механизм в Linux, который позволяет асинхронно отслеживать события на файловых дескрипторах без постоянного опроса.
Читать далее