Eventlet vs Greenlet vs gevent?

Eventlet vs Greenlet vs gevent?

我正在尝试创建一个具有事件循环的 GUI 框架。一些线程处理 UI 一些线程处理事件。我搜索了一下,找到了这三个库,我想知道哪个更好用?优点和缺点是什么?

我可以使用这三个库之一,甚至可以使用 python threadsconcurrent 为自己创建一些东西图书馆。

如果能分享任何类型的经验、基准和比较,我将不胜感激。

  • 您绝对不希望 greenlet 用于此目的,因为它是一个低级库,您可以在其上创建轻线程库(如 Eventlet 和 Gevent)。
  • Eventlet、Gevent 和更多类似的库为 IO 绑定任务(在文件、网络上等待 read/write)提供了出色的工具集。
  • 您的大部分 GUI 代码可能会等待其他线程(此时 green/light/OS 线程无关紧要)完成,这是上述库的完美目标。
  • 所有的绿色线程库都大同小异。尝试所有并决定哪一个最适合您的项目。
  • 但由于 OS 级 GUI 层的要求,您也可能需要将一些内容提取到单独的 OS 线程中。
  • 考虑到 Python3 中线程锁的更好实现,如果您的应用程序不需要数百个或更多线程,您可能只想坚持使用本机 threading 模块。