web-dev-qa-db-fra.com

Eventlet vs Greenlet vs gevent?

J'essaie de créer un cadre GUI qui aura une boucle d'événements. certains threads pour gérer l'interface utilisateur et d'autres pour la gestion des événements. J'ai cherché un peu et trouvé ces trois bibliothèques et je me demande laquelle est la meilleure à utiliser? Quels sont les avantages et inconvénients?

Je pourrais utiliser l'une de ces trois bibliothèques ou même créer quelque chose pour moi en utilisant la bibliothèque python threads, ou concurrent.

J'apprécierais partager tout type d'expérience, de référence et de comparaison.

18
mehdy
  • Vous ne voulez certainement pas de greenlet à cet effet, car c'est une bibliothèque de bas niveau au-dessus de laquelle vous pouvez créer des bibliothèques de threads légers (comme Eventlet et Gevent).
  • Eventlet, Gevent et d'autres bibliothèques similaires fournissent un excellent ensemble d'outils pour les tâches liées aux E/S (en attente de lecture/écriture sur fichier, réseau).
  • Probablement, la plupart de votre code GUI attendra la fin des autres threads (à ce stade, le thread vert/clair/OS n'est pas pertinent), ce qui est une cible parfaite pour les bibliothèques mentionnées ci-dessus.
  • Toutes les bibliothèques de threads verts sont généralement les mêmes. Essayez tout et décidez lequel convient le mieux à votre projet.
  • Mais il est également possible que vous deviez extraire certaines choses dans un thread OS séparé en raison des exigences de la couche GUI de niveau OS.
  • Compte tenu de cela et d'une meilleure implémentation du verrouillage des threads en Python3, vous voudrez peut-être simplement vous en tenir au module natif threading si votre application n'a pas besoin de centaines ou plus de threads.
13
temoto