2013-04-30 2 views
10

Speziell die GreenPool-Klasse in Eventlet. Ich habe Code getestet, um große Dateien in S3 als einzelne Teile eines mehrteiligen Uploads hochzuladen. Was ich bisher bemerkt habe ist, dass bei Verwendung von eventlet die CPU-Auslastung viel geringer ist. Suchen Sie einfach nach anderen Vor- und Nachteilen für das Eventlet, anstatt nur Threading zu verwenden. Vielen Dank.Welche Vorteile bietet die Verwendung des Eventlet-Moduls in Python gegenüber dem Threading-Modul?

Antwort

9

Grundsätzlich sind Eventlet grüne Fäden ein leichtes Analogon von OS-Threads für alle praktischen Zwecke in Betracht gezogen werden. Pro:

  • billiger zu schaffen, in Bezug auf die CPU, den Speicher und syscalls (0)
  • billiger zu schalten; Dies gilt besonders in Python 2.x, wo jeder Thread aktiv versucht, GIL zu greifen, was CPU verschwendet.

Nachteile:

  • wichtig da viele grüne Threads innerhalb eines OS-Thread arbeiten, wenn ein Systemaufruf (z open (2)) in einer von ihnen blockiert OS-Thread, alle grünen Fäden sind auch blockiert.
  • kein SMP (MultiCPU/Multi-Core); aber dann mit GIL gilt dies auch für OS-Threads in Python. Mit greenlet [1] ist diese Einschränkung strenger, da es für einige C-Erweiterungen nicht möglich ist, GIL freizugeben, damit andere grüne Threads fortfahren können.

Sie auch diese Antwort nützlich finden können: Is a greenthread equal to a "real" thread

[1] "Einfädeln" Bibliothek von Eventlet https://github.com/python-greenlet/greenlet

verwendet
Verwandte Themen