Why does the Python asyncio list not process asynchronously?

Можете объяснить, почему у кода async def main(api_id, api_hash, tg_session, chat_id, db_session) выводится вывод таким образом, а у async def foo() выводится нормальный вывод?
  • 25 сентября 2023 г. 7:27
Ответы на вопрос 2
The reason why asyncio list does not process asynchronously is that it is based on the standard built-in list in Python, which is not designed to work in an asynchronous manner. The asyncio framework in Python provides high-level abstractions for asynchronous programming, but it cannot magically make every built-in Python object work asynchronously.

Regarding the specific code you mentioned, without seeing the actual code, it is difficult to provide a precise explanation. However, if the `main` function is not using any asynchronous constructs (such as `await` statements or `asyncio` coroutines), then it will execute in a synchronous manner.

On the other hand, if the `foo` function is written as an asynchronous function with the `async` keyword, and it contains `await` statements or uses other asynchronous constructs, it can execute in an asynchronous manner, allowing other parts of the program to run concurrently.

To take full advantage of the asynchronous capabilities of asyncio, you need to structure your code using `await` statements, `async with` blocks, and other asynchronous constructs and use asyncio-friendly libraries and functions wherever possible.
В первом случае все операции выполняются последовательно: мы итерируемся по списку синхронно, дожидаясь выполнения каждой операции перед переходом к следующей.

Во втором случае мы запускаем несколько асинхронных генераторов. Каждый генератор запускается, выводит сообщение "Started", достигает оператора await и передает управление следующему генератору. То есть, сначала все генераторы достигают оператора await (печатают сообщение "Started"), затем они ставятся в конец очереди и, когда все сообщения "Started" уже были напечатаны, начинается выполнение кода, следующего после оператора await.
Похожие вопросы