Ищу инструмент который позволит мне заменить Coro который я использую программируя на Perl.
Задача которую мне нужно решить - обеспечить выполнение частей кода друг от друга не зависящих в одном процессе, но не тратя время на ожидание во время блокировок, путём переключения контекста выполнения на другую часть кода.
Что это даёт? Возможность асинхронно работать с HTTP (и другими вещами где вам придётся ждать, например базы данных или жёсткий диск) без лишних проблемм пользуясь своей любимой библиотекой.
В кратце о том как работает Coro:
Coro делал переключение контекста в рамках одного процесса в местах где процесс выполнения блокировался на ожидание ответа, таким образом в момент ожидания выполнялась работа, а не остановка процесса.
Например нужно скачать данные по двум ссылкам.
Мы заключаем код скачивания в конструкцию модуля (на подобии той что нужно делать при запуске потоков).
И запускаем выполнение.
И под капотом произойдёт следующее:
1. Отправляем запрос к серверу из первой ссылки.
2. Переходим к выполнению второго блока кода.
3. Отправляем запрос к серверу из второй ссылки.
4. Переключаемся на первый блок кода.
5. Обрабатываем ответ.
6. Переключаемся на второй блок кода.
7. Обрабатываем ответ.
Не думаю что я смог это сособо понятно описать, но надеюсь вы поняли о чём я)
По сути это способ ускорить выполнения программы за счёт выполнения полезной нагрузки вместо простоя в ожидании ответа от чего либо (сервера, жёсткого диска и т.д.).
Так вот вопрос чем заменить этот инструмент в Python3?
Я бы мог использовать треды, но думаю это чересчур прожорливый вариант.