Junior — Middle
113
Quais são as diferenças entre o uso de threads e programação assíncrona com async/await em Python?
Resposta da IA
sobes.tech IA
As principais diferenças entre threads e async/await em Python:
-
Threads:
- Permitem executar várias operações em paralelo, usando threads do sistema.
- São adequados para tarefas relacionadas com entrada/saída (I/O), mas devido ao GIL (Global Interpreter Lock) não são eficientes para tarefas intensivas em CPU.
- Podem levar a condições de corrida e requerem sincronização.
-
Async/await:
- Baseiam-se em corrotinas e no ciclo de eventos.
- Permitem escrever código assíncrono que não bloqueia a execução enquanto espera por I/O.
- São mais eficientes para um grande número de operações de I/O.
- Não criam novos threads, operam num único thread.
Exemplo de async/await:
import asyncio
async def fetch_data():
await asyncio.sleep(1) # simulação de operação I/O
return 'dados'
async def main():
result = await fetch_data()
print(result)
asyncio.run(main())
Assim, async/await é conveniente para tarefas de I/O escaláveis, enquanto os threads são úteis quando é necessária paralelização ao nível do sistema.