Sobes.tech
Junior — Middle

É possível criar novos threads dentro de funções assíncronas em Python?

sobes.tech IA

Resposta da IA

Sim, dentro de funções assíncronas em Python é possível criar novas threads. As funções assíncronas (async def) funcionam dentro de um ciclo de eventos (event loop), mas nada impede o uso do módulo padrão threading para criar threads.

Isto pode ser útil se precisar executar uma operação bloqueante em paralelo com código assíncrono.

Exemplo:

import asyncio
import threading

async def funcao_assincrona():
    def tarefa_thread():
        print("Executado numa thread separada")

    thread = threading.Thread(target=tarefa_thread)
    thread.start()
    await asyncio.sleep(1)
    thread.join()

asyncio.run(funcao_assincrona())

No entanto, é importante lembrar que as threads em Python são limitadas pelo GIL, e para tarefas intensivas de CPU, é melhor usar processos (multiprocessing). Para operações de entrada/saída, o código assíncrono costuma ser mais eficiente.