簡體   English   中英

Python多處理與Eventlet

[英]Python Multiprocessing vs Eventlet

根據我的理解,線程不能並行執行(根據可用性和隨機執行),這就是使用Eventlet的原因。

如果Eventlets更多的是並行性,為什么我們不能只使用Python的多處理模塊。

我想過執行多個進程模塊並使用join方法()來檢查所有進程是否完整。

有人可以解釋我的理解是否正確?

根據我的理解,線程不能並行執行(根據可用性和隨機執行)

正確

這就是使用Eventlet的原因。

不太正確。 Eventlet庫用於簡化非阻塞IO編程。 它實際上並沒有增加並行性。 由於GIL,線程執行仍然一次限制為一個線程。 但它被使用是因為它極大地簡化了啟動,調度和管理IO綁定線程的過程,特別是那些不需要相互交互的線程。

如果Eventlets更多的是並行性

正如我剛才提到的,這不是他們存在的。

為什么我們不能只使用Python的多處理模塊。 我想過執行多個進程模塊並使用join方法()來檢查所有進程是否完整。

你當然可以! 並且您將通過這種方法獲得實際的並行執行。 但是你可能無法獲得相同的加速。 多處理庫更適合於CPU綁定的並行任務,因為那些需要更頻繁地訪問解釋器的任務。 由於多個流程執行和管理的開銷,在使用IO處理任務的多處理時,實際上可能會看到執行時間的增加。


與大多數優化和執行時間問題一樣,嘗試兩者和分析是確保您為應用程序使用“最佳”選項的可靠方法。 雖然您可能會發現如果您編寫代碼以首先使用Eventlet,然后嘗試修改它以使用常規線程或多處理,您將不得不編寫更多的樣板代碼來管理線程或進程,並且Eventlets的值應該變得更加明顯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM