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 一起工作缓慢的主要内容,如果未能解决你的问题,请参考以下文章

pprint模块的一个简单的案例

pythonprint和pprint的区别

介绍一个非常好用的Python模块-pprint模块,相信你一定会爱上它的

关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”

5.8 pprint--美观地打印数据

5.8 pprint--美观地打印数据