Junior — Middle
É possível executar várias tarefas ao mesmo tempo num único thread em Python?
sobes.tech IA
Resposta da IA
Em Python, num único thread, é possível executar várias tarefas simultaneamente usando programação assíncrona (asyncio) ou geradores, que permitem alternar entre tarefas sem criar novos threads. No entanto, devido ao GIL (Global Interpreter Lock) na implementação padrão do CPython, a execução simultânea de múltiplos threads que executam código Python é limitada: apenas um thread é executado de cada vez.
Exemplo com asyncio para execução simultânea de tarefas em um único thread:
import asyncio
async def tarefa(nome, atraso):
await asyncio.sleep(atraso)
print(f"Tarefa {nome} concluída")
async def main():
await asyncio.gather(
tarefa('A', 1),
tarefa('B', 2),
tarefa('C', 1.5)
)
asyncio.run(main())
Dessa forma, várias tarefas podem ser executadas "paralelamente" em um único thread, alternando com base no tempo de espera, mas não simultaneamente no sentido de multitarefa.