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