Библиотека Python asyncio
— это мощный инструмент для написания асинхронного кода с использованием синтаксиса async
/await
. Это часть стандартной библиотеки и обеспечивает цикл событий, который управляет асинхронными задачами.
Основы асинхронного программирования
Сопрограммы
В асинхронном программировании функции, которые можно приостанавливать и возобновлять, называются сопрограммами. Они определены с использованием синтаксиса async def
. Сопрограммы можно приостановить с помощью ключевого слова await
и возобновить позже, когда ожидаемая операция завершится.
Цикл событий
Цикл событий управляет и планирует одновременное выполнение задач. Задачи можно создавать с помощью сопрограмм и планировать их запуск в цикле событий.
Ждите
Ключевое слово await
используется в сопрограммах для приостановки выполнения до завершения ожидаемой операции. Он обычно используется для операций ввода-вывода, таких как чтение из файла или выполнение сетевого запроса.
Использование асинсио
import asyncio async def count_up_to(number, delay): for i in range(1, number + 1): print(f"Count: {i}") await asyncio.sleep(delay) async def main(): await asyncio.gather( count_up_to(5, 1), count_up_to(10, 0.5) ) asyncio.run(main())
- Импортируйте модуль
asyncio
. - Определите асинхронную сопрограмму
count_up_to(number, delay)
, которая принимает два параметра:number
(число, до которого нужно считать) иdelay
(интервал времени между подсчетами). - Внутри сопрограммы есть цикл, который считает до указанного значения
number
и печатает счетчик на каждой итерации. Затем он ожидает использованияawait asyncio.sleep(delay)
, чтобы ввести задержку между каждым счетом. - Определите основную асинхронную сопрограмму
main()
. - Используйте
asyncio.gather()
для одновременного запуска нескольких сопрограмм. - Используйте
asyncio.run(main())
для запуска основной сопрограммы и выполнения параллельных задач.
На простом английском языке
Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти:
- Обязательно аплодируйте и следуйте за автором! 👏
- Еще больше контента вы можете найти на PlainEnglish.io 🚀
- Подпишитесь на нашу бесплатную еженедельную рассылку. 🗞️
- Следуйте за нами в Twitter, LinkedIn, YouTube > и Discord.