Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Асинхронное программирование на python с использованием библиотеки asyncio
У меня на канале есть целая подборка, посвящённая многозадачности. А что такое стандартная библиотека asyncio? Эта такая обёртка к многозадачности, которая упрощает реализацию параллельного (или конкурентного, если буквально переводить слово concurrent) выполнения задач. Как это реализовано в библиотеке asyncio - я не знаю, но в целом библиотека удалась и работать в ней довольно удобно. В простейших случаях, как мы увидим ниже, всё довольно просто.
Ниже представлена программы, в которой параллельно выполняются три функции: fn1(), fn2(), fn3().
Результат выполнения программы см. рисунок 2
Пояснения к программе
- Что в первую очередь следует отметить? Функции, которые будут выполняться асинхронно должны заменяться корутинами. От английского coroutine, т.е. сопрограмма. Для этого используется префикс async.
- Также, если необходимо, чтобы цикл был асинхронным, также используется префикс async (см. циклы for в функциях).
- Запуск корутины осуществляется методом asyncio.create_task(). Но далее используется оператор await, который делегирует выполнение действий в другую корутину (задачу).
- Особо следует отметить итераторы. Функция range() уже не подойдёт, но можно создать свой итератор аналог range(): a_range(). Итератор создаётся известным уже нам методом с использованием yield.
- flush в функции print() используется, чтобы сразу сбрасывать вывод в консоль.
Изучение библиотеки asyncio продолжится.
Пока всё!
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.