Sobes.tech
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.