Как можно правильно организовать запуск 10 функций `waste_time()` с использованием асинхронного программирования, чтобы они работали параллельно?
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()