2010-08-11 12 views
1

我有一個Web服務需要處理重要的併發利用率和卷,我需要測試它。由於該服務相當專業化,因此它不適用於典型的測試框架。該測試需要模擬多個客戶端同時發佈到URL,解析生成的Http響應,檢查數據庫是否得到適當更新並確保某些電子郵件已正確發送/接收。使用Python的Web服務併發測試

我公司目前的觀點是我應該用Python編寫這個框架。我之前從未使用多線程的Python,並且在進行我的研究時,我遇到了全局解釋器鎖,它似乎是大部分Python的併發處理的基礎。在我看來,GIL將阻止Python即使在多處理器機器上也能夠實現真正的併發。這是真的?如果我使用編譯器將Python編譯爲本地代碼,這種情況會發生變化嗎?我是否完全吠叫了錯誤的樹,並且Python是這項工作的錯誤工具?

回答

0

假設一般的網絡條件,只要您有足夠的系統資源,Python的定期線程模塊將允許您以比任何實際工作負載更高的速率模擬併發工作負載。

2

全局解釋器鎖可防止線程同時執行Python代碼。當Python被編譯爲字節碼時,這並不會改變,因爲字節碼仍然由Python解釋器運行,這將執行GIL。 threading通過每sys.getcheckinterval()字節碼切換線程來工作。

這不適用於multiprocessing,因爲它會創建多個Python 進程而不是線程。您可以擁有儘可能多的系統支持的功能,並行運行。

所以是的,你可以用Python做到這一點,可以用threadingmultiprocessing

+0

謝謝。我將使用多處理選項並使用建議的庫ozk。 – 2010-08-11 13:31:10