Что такое Корутины?
Корутины — это специальные функции в Python, предназначенные для асинхронного программирования, которые могут быть приостановлены и возобновлены в дальнейшем. Они сохраняют своё внутреннее состояние между вызовами, позволяя программе выполнять другие задачи, пока корутина "ждёт" завершения какой-либо операции.
Корутины идеально подходят для неблокирующих задач, таких как сетевые запросы, работа с файлами или взаимодействие с базами данных, — то есть для всего, что требует ожидания, но при этом не должно "замораживать" выполнение всей программы.
Отличие от обычных функций:
- Обычные функции завершаются после return.
- Корутины могут "приостановиться" с помощью await, а затем продолжить выполнение.
Как определить корутину:
Корутины создаются с помощью ключевого слова async def и используют await для ожидания других асинхронных функций.
import asyncio
async def приветствие():
print("Привет")
await asyncio.sleep(2)
print("Через 2 секунды снова привет!")
Как запускать:
Нельзя просто вызвать функцию. Необходимо использовать await или asyncio.run():
asyncio.run(приветствие())
Преимущества корутин:
- Позволяют выполнять асинхронные задачи без блокировки основного потока.
- Повышают производительность при множестве операций ввода-вывода.
- Используют меньше ресурсов по сравнению с потоками и процессами.
Полезно знать:
Чтобы эффективно использовать корутины, необходимо понимать:
- async и await
- Event loop (цикл событий)
- Модуль asyncio
Пример с несколькими корутинами:
import asyncio
async def первая():
print("Первая началась")
await asyncio.sleep(1)
print("Первая завершена")
async def вторая():
print("Вторая началась")
await asyncio.sleep(1)
print("Вторая завершена")
async def main():
await asyncio.gather(первая(), вторая())
asyncio.run(main())
Здесь обе корутины выполняются параллельно, и программа завершается за 1 секунду, а не за 2.
Связанные термины:
Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!