Например есть следующий код:
import asyncio import aiohttp urls = ['http://www.google.com', 'http://www.yandex.ru', 'http://www.python.org'] async def call_url(url): print('Starting {}'.format(url)) response = await aiohttp.get(url) data = await response.text() print('{}: {} bytes: {}'.format(url, len(data), data)) return data futures = [call_url(url) for url in urls] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(futures))
Я не понимаю что именно происходит по капотом.
В случае javascript всё было бы ясно: использовалось бы api браузера, которое не является частью языка поэтому может все три запроса выполнить в отдельных потоках. А затем вернуть в очередь асинхронных событий первым тот, который готов на 100%.
НО python язык многопоточный и ему не нужна надстройка в виде asyncio чтобы поместить каждый запрос в отдельный поток. Поэтому скорее всего все запросы выполняются в одном потоке. Я не понимаю как