Как осуществляется запуск корутин в библиотеке asyncio?

Как можно правильно организовать запуск 10 функций `waste_time()` с использованием асинхронного программирования, чтобы они работали параллельно?
  • 31 мая 2024 г. 11:51
Ответы на вопрос 2
1. Для запуска корутин в библиотеке asyncio используется функция `asyncio.run()` или цикл событий `asyncio.get_event_loop().run_until_complete()`.

Пример запуска корутины с использованием `asyncio.run()`:
```python
import asyncio

async def my_coroutine():
    await asyncio.sleep(1)
    print("Coroutine is done")

asyncio.run(my_coroutine())
```

2. Для правильной организации запуска 10 функций `waste_time()` с использованием асинхронного программирования можно воспользоваться функцией `asyncio.gather()`.

Пример запуска 10 функций `waste_time()` с использованием `asyncio.gather()`:
```python
import asyncio

async def waste_time():
    await asyncio.sleep(1)
    print("Function is done")

async def main():
    tasks = [waste_time() for _ in range(10)]
    await asyncio.gather(*tasks)

asyncio.run(main())
```

Этот код запустит 10 функций `waste_time()` параллельно и дождется их завершения.
Потому что, в первом случае ты сначала все запустил, а потом ожидаешь выполнение, а во втором, ты ожидаешь выполнения после каждого конкретно запуска, тут даже create_task не нужен, можно тупо await waste_time()
Похожие вопросы