2013-04-30 12 views

risposta

9

In sostanza, i thread verdi di Eventlet devono essere considerati un analogo leggero dei thread del sistema operativo per tutti gli scopi pratici. Pro:

  • economico creare in termini di CPU, memoria e syscalls (0)
  • più economico per passare; questo è particolarmente vero in Python 2.x in cui ogni thread tenta attivamente di afferrare GIL che spreca CPU.

Contro:

  • importante poiché molti fili verdi operano entro un filo OS, quando una chiamata di sistema (es aperta (2)) in uno di essi blocchi filo OS, tutti i fili verdi sono bloccati anche
  • no SMP (multicpu/multicore); ma poi con GIL, questo vale anche per i thread del sistema operativo in Python. Con greenlet [1] questa restrizione è più rigorosa poiché non è possibile che alcune estensioni C rilasciano GIL per consentire l'esecuzione di altri thread verdi.

È inoltre possibile trovare questa risposta utile: Is a greenthread equal to a "real" thread

[1] "threading" libreria utilizzata da Eventlet https://github.com/python-greenlet/greenlet

Problemi correlati