Python · Avançado · Inglês · Técnico
to_thread
Função asyncio.to_thread (3.9 ou superior) que executa uma chamada bloqueante numa thread separada, devolvendo um awaitable. Evita travar o event loop com código síncrono.
Onde usar
Aparece ao integrar bibliotecas síncronas, como um cliente de banco ou a leitura de arquivos, num serviço assíncrono. Mantém o loop livre para atender outras tarefas.
Em código
import asyncio
import time
async def main():
await asyncio.to_thread(time.sleep, 1)
print('livre')
asyncio.run(main())Exemplos
Wrap the blocking call with to_thread.
Envolva a chamada bloqueante com to_thread.
to_thread keeps the event loop responsive during the file read.
O to_thread mantém o event loop responsivo durante a leitura do arquivo.
Cuidado
Não adianta para cálculo pesado de CPU no CPython padrão, pois o GIL impede o ganho; para isso use um processo.
Sinônimos
asyncio.to_thread