Я использую Django на 32-битной машине Ubuntu с Python 2.7. Мой сервер разработки работал медленно, занимая около 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-разрядной ОС X:
14531/5334 1.016 0.000 2.199 0.000 pprint.py:247(_safe_repr)
Между тем мне приходится отключать режим отладки, чтобы нормально использовать сервер dev.
Вот скрипт профилирования:
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()
(cookie-файл sessionid используется для отображения страницы, на которой вам нужно войти.)
Я не уверен, что 32-битная система является основной причиной.
Основной вопрос: Почему pprint._safe_repr такой медленный в Python 2.7 32-битный и быстрый в 64-битном? и могу ли я установить что-то, чтобы сделать это быстрым.