2013-04-30 26 views

Odpowiedz

9

Zasadniczo, zielone nitki Eventletu należy uważać za lekki analog wątków systemu operacyjnego dla wszystkich praktycznych zastosowań. Zalety:

  • tańsze tworzenie pod względem procesora, pamięci i syscalli (0)
  • tańsze zwrotnicy; jest to szczególnie prawdziwe w Pythonie 2.x, gdzie każdy wątek aktywnie próbuje przechwycić GIL, co marnuje procesor.

Wady:

  • ważne od wielu Green thread działać w jednym wątku OS, gdy syscall (np open (2)), w jednej z nich blokuje wątku OS, wszystkie zielone wątków są również zablokowane.
  • bez SMP (multicpu/multicore); ale z GIL dotyczy to również wątków systemu operacyjnego w Pythonie. Z greenletem [1] to ograniczenie jest bardziej ścisłe, ponieważ nie jest możliwe, aby niektóre rozszerzenia C wypuściły GIL, aby umożliwić kontynuację innych zielonych wątków.

Można również znaleźć tę odpowiedź za przydatne: Is a greenthread equal to a "real" thread

[1] "trzech" biblioteki używane przez Eventlet https://github.com/python-greenlet/greenlet