Вы можете использовать некоторые вариации этого:
s = 'foohellobar'
def replfunc(m):
return m.groups()[0]+m.groups()[1].upper()+m.groups()[2]
re.sub('(foo)([a-z]+)(bar)',replfunc,s)
дает выход:
'fooHELLObar'
Можно ли оптимизировать скорость критически важного приложения, разработанного на Django, с помощью Cython
Сомнительно.
Большая часть времени отклика веб-приложения связана с элементами, отличными от HTML, которые необходимо загружать отдельно. Обычное эмпирическое правило - 8 статических файлов на HTML-страницу. (.CSS, .JS, изображения и т. Д.)
Поскольку никакой статический контент не поступает из Django, большая часть временной шкалы вашего веб-приложения - это Apache (или Nginx, или какое-либо другое серверное программное обеспечение вне Django).
Если посмотреть только на время создания HTML, вы обнаружите, что большую часть времени тратите на ожидание базы данных (даже если это SQLite в памяти, вы увидите, что база данных имеет тенденцию доминировать на временной шкале). )
Когда вы заставляете Apache и базу данных работать быстро, тогда - и только тогда - вы можете рассмотреть элементы Python.
Итог. Не тратьте время на то, чтобы Django и Python работали быстрее.
Повторяя другие ответы, это вряд ли принесет вам какую-либо конкретную выгоду, если, конечно, вы не описали конкретный случай, когда можно было бы получить некоторую выгоду.
В дополнение к ответам я хочу указать на список веб-оптимизаций от веб-команды Yahoo. Это измеренные и подтвержденные достижения в областях, применимых ко многим веб-сайтам и заслуживающие изучения:
Команда Exceptional Performance определила ряд лучших практик для ускорения веб-страниц. Список включает 35 лучших практик, разделенных на 7 категорий.
Ну, да, но большинство вещей, которые делает веб-приложение, не выиграют от такого рода изменений, если у вас нет твердых доказательств того, что они будут. Дважды профилируйте, один раз оптимизируйте.