Проигнорируйте ответ всех остальных на данный момент.Первое, что вы должны научиться использовать это профилировщик.Python поставляется с профилем / cProfile;Вы должны научиться читать результаты и анализировать, где находятся настоящие узкие места.Задача оптимизации состоит из трех частей: сократить время, затрачиваемое на каждый вызов, сократить количество вызовов, которые необходимо выполнить, и уменьшить использование памяти для уменьшения перегрузки диска.
Первая задача относительно проста.Профилировщик покажет вам наиболее трудоемкие функции, и вы можете сразу перейти к этой функции, чтобы оптимизировать ее.
Вторая и третья цель сложнее, поскольку это означает, что вам нужно изменить алгоритм, чтобы уменьшить необходимостьсделать так много звонков.Найдите функции, которые имеют большое количество вызовов, и постарайтесь найти способы уменьшить необходимость их вызова.Используйте встроенные коллекции, они очень хорошо оптимизированы.
Если вы выполнили все вышеперечисленное и у вас все еще есть проблемы с производительностью, и вы работаете на платформе x86 (в основном с большинством процессоров), тогда начните смотретьПсихо.Psyco может оптимизировать код Python с необходимостью вообще изменить ваш код Python.
Если вы много занимаетесь обработкой чисел и массивов, вам следует взглянуть на Numpy / Scipy и сторонние модули gmpy.,
Следующая попытка - Cython.Cython - это немного другой язык, чем Python, фактически Cython на самом деле является Си с синтаксисом Python.
Для частей вашего кода, которые находятся в очень узких циклах, которые вы больше не можете оптимизировать, используя любые другие способы, вы можете захотетьпереписать его как расширение C.Python имеет очень хорошую поддержку для расширения с C.