Pprint 模块在 32 位系统中与 Django 一起工作缓慢
Posted
技术标签:
【中文标题】Pprint 模块在 32 位系统中与 Django 一起工作缓慢【英文标题】:Pprint module works slowly with Django in 32bits system 【发布时间】:2011-12-28 22:33:38 【问题描述】:我在装有 Python 2.7 的 32 位 Ubuntu 机器上使用 Django。我的开发服务器一直很慢,渲染任何页面大约需要 15 秒。我运行了一个 cProfile 测试,看看什么工作如此缓慢。
好像是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 位中如此之快?以及我是否可以设置一些东西让它变得更快。
【问题讨论】:
【参考方案1】:为什么 pprint._safe_repr 在 Python 2.7 32 位中如此缓慢而在 64 位中如此之快?
它在 64 位上并不快。你的同事得到的更少ncalls
。
您应该调查为什么单个 GET 会导致对_safe_repr()
进行如此大量的调用。
【讨论】:
以上是关于Pprint 模块在 32 位系统中与 Django 一起工作缓慢的主要内容,如果未能解决你的问题,请参考以下文章
介绍一个非常好用的Python模块-pprint模块,相信你一定会爱上它的