2016-04-25 164 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模塊。