Junior — Middle
Explique o conceito de Green thread no contexto do Python e fale sobre as suas diferenças em relação aos threads normais
sobes.tech IA
Resposta da IA
Green thread — são threads geridos pela máquina virtual ou pelo runtime, e não pelo sistema operativo. Em Python, o conceito de green threads é implementado através de bibliotecas, por exemplo, gevent ou eventlet.
Diferenças em relação aos threads normais (threads do SO):
- Os green threads funcionam num único thread do sistema, e a troca entre eles ocorre ao nível da aplicação.
- São mais leves e rápidos de criar e trocar, pois não requerem troca de contexto do SO.
- Não utilizam multiprocessamento, pois operam num único núcleo.
- Não estão sujeitos a problemas do GIL (Global Interpreter Lock) em Python, pois a troca é gerida manualmente.
Exemplo de uso de green threads com gevent:
import gevent
def task(name):
print(f"Tarefa {name} iniciada")
gevent.sleep(1)
print(f"Tarefa {name} finalizada")
g1 = gevent.spawn(task, 'A')
g2 = gevent.spawn(task, 'B')
g1.join()
g2.join()
Assim, os green threads são adequados para tarefas com muitas operações de I/O, onde a alta concorrência sem custos adicionais do SO é importante.