Python高并發的網絡編程庫:eventlet
eventlet是一個用來處理和網絡相關的python庫函數,而且可以通過協程來實現并發,在eventlet里,把“協程”叫做 greenthread(綠色線程)。所謂并發,就是開啟了多個greenthread,并且對這些greenthread進行管理,以實現非阻塞式的 I/O。比如說用eventlet可以很方便的寫一個性能很好的web服務器,或者是一個效率很高的網頁爬蟲,這都歸功于eventlet的“綠色線程”,以及對“綠色線程”的管理機制。更讓人不可思議的是,eventlet為了實現“綠色線程”,竟然對python的和網絡相關的幾個標準庫函數進行了改寫,并且可以以補丁(patch)的方式導入到程序中,因為python的庫函數只支持普通的線程,而不支持協程,eventlet稱之為“綠化”。
它通過greenlet提供的協程功能,讓開發者可以不用將以往的多線程等并發程序的開發方式轉變成異步狀態機模型,就能直接使用select/epoll/kqueue等操作系統提供的支持高并發IO接口,并且能盡可能地發揮它們在并發上的優勢。
與它同類的另一款產品是Gevent,它們有著很類似的設計。
在CPython下,由于Gevent使用了Cython綁定了libev或者libevent等C庫,導致Gevent比eventlet有著更優秀的性能。
但是也因為Cython寫的部分組件,導致Gevent無法借助PyPy來給它加速,而eventlet則沒有這個限制。在PyPy的加速下,eventlet的性能可以有成倍的提升。 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!