问题 Eventlet vs Greenlet vs gevent?


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

我可以使用这三个库中的一个,甚至可以使用python为自己创建一些东西 线程, 要么 同时 图书馆。

我希望分享任何经验,基准和比较。


9941
2018-04-25 07:20


起源

仔细阅读这篇博文可能有所帮助 blog.gevent.org/2010/02/27/why-gevent - Mahdi Zareie


答案:


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

9
2018-04-26 06:48



对于“应该有一个 - 最好只有一个 - 明显的方式来做到这一点”。我用了 multiprocessing。 - Cees Timmerman