2011-12-28 62 views
3

我在Python 2.7的32位Ubuntu機器上使用Django。我的開發服務器一直很慢,大約需要15秒來渲染任何頁面。我跑了一個cProfile測試,看看什麼運作如此緩慢。Pprint模塊在32位系統中使用Django緩慢工作

似乎它是pprint模塊。

這裏是我的統計數據:

ncalls  tottime percall cumtime percall filename:lineno(function) 
272605/48718 24.238  0 49.213 0.001 pprint.py:247(_safe_repr) 

,這是我的同事誰運行64位OS X:

14531/5334 1.016 0.000 2.199 0.000 pprint.py:247(_safe_repr) 

同時,我不得不關掉調試模式正常使用開發服務器。

這裏的分析腳本:

from cProfile import Profile 
from django.test.client import Client 
import Cookie 
cl = Client() 
cl.cookies = Cookie.SimpleCookie({'sessionid':'7344ebeba093b65c1d59a9d7583f60bc'}) 
p = Profile() 
p.runctx("c.get('/welcome/')", globals={'c': cl}, locals={}) 
p.print_stats() 

(的SessionID Cookie用於顯示在您需要登錄頁。)

我不知道的32位系統是主原因。

主要問題是:爲什麼pprint._safe_repr在Python 2.7 32位中很慢,而在64位中速度很快?,如果我可以設置一些東西讓它變快。

回答

5

爲什麼pprint._safe_repr在Python 2.7 32位中速度很慢,而在64位中速度很快?

它在64位上不是很快。你的同事得到更少ncalls

您應該調查爲什麼單個GET導致如此大量的_safe_repr()調用。

相關問題