標題說明了一切。與 gevent.joinall() 相比,使用屬于 gevent.Pool 的方法之一在池中并行(排序)運行 greenlets 似乎更好更快。每種方法的優缺點是什么?
uj5u.com熱心網友回復:
我認為關鍵的區別不是原始性能,而是性能管理。當您使用 gevent.joinall() 時,您必須自己管理一次存在多少綠葉。天真的實作將創建計算請求可能需要的數量。
另一方面,gevent.Pool 可以很容易地配置為限制同時運行的數量,從而防止您的應用程式在資源不足的情況下運行。
像往常一樣,這是權衡。您的池可能運行速度較慢,因為它可能不會像使用 gevent.joinall() 的幼稚實作那樣允許運行盡可能多的 greenlet,但是,您不太可能在資源不足的情況下運行應用程式(并級聯到其他錯誤)。
最終,您必須回答這樣的問題:您是否可能收到過多的請求?你有足夠的資源可以利用嗎?原始峰值性能比平均可靠性更重要嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422768.html
標籤:
