J'ai écrit ce morceau de code:Est-ce que Python asyncio utilise un pool de threads?
import asyncio
import threading
from aiohttp import ClientSession
async def fetch(url):
async with ClientSession() as session:
async with session.get(url) as response:
response = await response.read()
print(threading.current_thread().name)
loop = asyncio.get_event_loop()
tasks = [asyncio.ensure_future(fetch("http://example.com")) for i in range(5)]
loop.run_until_complete(asyncio.wait(tasks))
Il imprime "MainThread" à chaque fois. Cela signifie-t-il que toutes les demandes sont exécutées simultanément à l'aide du même thread principal et n'utilisent pas les threads d'un pool de threads pour exécuter chaque requête ou les threads sont-ils extraits?
Ce message semble montrer que, en fait, il y a un pool de threads qui utilise Python pour ces tâches async: http://skipperkongen.dk/2016/09/09/easy-parallel-http-requests-with-python-and-asyncio/