2016-04-25 167 views
7

我正在尝试创建一个将有事件循环的GUI框架。一些线程来处理用户界面,一些用于事件处理。我搜索了一下,发现了这三个库,我想知道哪一个更好用?优缺点都有什么?Eventlet vs Greenlet vs gevent?

我可以用这三个库之一,甚至创建通过使用python 线程,或并发库创造的东西为我自己。

我会很高兴分享任何类型的经验,基准和比较。

+1

非常仔细阅读此博客文章可能会帮助https://blog.gevent.org/2010/02/27/why-gevent/ –

回答

7
  • 您绝对不希望greenlet出于此目的,因为它是一个低级库,您可以在其上创建轻型线程库(如Eventlet和Gevent)。
  • Eventlet,Gevent和更多类似的库为IO绑定任务(等待文件,网络读/写)提供了优秀的工具集。
  • 可能大部分GUI代码会等待其他线程(此时绿色/亮/ OS线程无关)完成,这是上述库的完美目标。
  • 所有的绿色线程库大部分都是一样的。尝试一切,并决定哪一个最适合您的项目。
  • 但是,由于操作系统级别的图形用户界面层的要求,您可能还需要将一些内容提取到单独的操作系统线程中。
  • 考虑到并且在Python3中更好地实现线程锁定,如果您的应用程序不需要数百个或更多的线程,您可能需要坚持使用原生threading模块。