Мы нашли интересную статью, в которой автор выделяет несколько фундаментальных проблем стандартной библиотеки Python:
– Огромное количество абстракций (Handle, Future, Task, Protocol, Transport). Мало кто может внятно объяснить разницу между ними.
– Дизайн
asyncio завязан на идее «одного главного потока», что выглядит анахронизмом в эпоху Python без глобальной блокировки интерпретатора.– Почему для работы с сокетом нужно вызывать методы цикла событий? Дизайн кажется перегруженным.
Вместо нагромождения объектов, TonIO сводит всё к двум сущностям: Event (Событие) и Waiter (Ожидающий).
1. Event: Простая обертка над атомарным флагом.
2. Waiter: Связующее звено между точкой приостановки (корутиной) и событием, которого она ждет.
Когда корутина доходит до
await, она порождает Waiter, который регистрируется в цикле. Как только событие происходит (флаг меняется), Waiter «просыпается» и ставит корутину обратно в очередь на исполнение. Никаких «фьючерсов» в классическом понимании.TonIO спроектирован в стиле Rust-библиотеки Tokio:
🔛 С помощью одного декоратора
@tonio.main ваш код запускается на всех доступных ядрах процессора.🔛 Главный поток Python (Main Thread) занимается исключительно низкоуровневым вводом-выводом (I/O). Весь прикладной код пользователя выполняется в отдельном пуле потоков. Вы больше не привязаны к «особому» главному потоку.
Готовы ли вы отказаться от совместимости со старыми библиотеками ради кратного роста производительности на современных многоядерных процессорах? 👇
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
