2013-04-26 55 views
1

我們正在調查gevent作爲我們Flask API的性能增強器的下降。我們的代碼庫中有很多psycopg2和Redis的通信。我們認爲我們會嘗試與不運行測試套件:單元測試運行速度更快,gevent補丁代碼庫?

import gevent.monkey 
gevent.monkey.patch_all() 
import psycogreen.gevent 
psycogreen.gevent.patch_psycopg() 

我的理解是,patch_all()使得標準庫許多阻塞調用整體上更有效地通過讓其他線程執行工作,同時等待迴歸呼叫。

我們的單元測試總共需要大約160秒的時間,geut patched和non-patched之間的差異可以忽略不計。我們是否應該在我們的測試套件中看到gevent的力量,還是隻能在真實的生產環境中展示自己?

更多信息:使用py.test運行相當普通的python-2.7.2 unittest。 Gevent 1.0rc2。

回答

1

你的理解是正確的,但你是在平行運行測試嗎?也許using nose?我的理解是,gevent不會真正改善任何線性代碼路徑的「直線速度」,它是一種在單個進程中啓用併發的機制。

+0

我已經研究過鼻子,但它不會用於我們的用例,因爲我們正在單個Postgres事務內部(爲了速度)運行我們的測試,所以這個過程鎖定了整個分貝。但值得研究我猜。 – 2013-04-29 10:08:19