Я некоторое время писал сценарии Python для командной строки, но в последнее время я чувствовал себя очень расстроенным из-за скорости.
Я не обязательно говорю о скорости обработки, диспетчеризации задач или других процессах, специфичных для инструментов командной строки (обычно это проблема проектирования / реализации), но я скорее говорю о простом запуске инструмента для вызова меню справки. или отображать минимальную информацию.
В качестве примера, Mercurial находится на отметке 0,080scs, а GIT на уровне 0,030scs
Я изучил исходный код Mercurial (в конце концов, это Python), но ответ на наличие быстродействующего скрипта все еще ускользает от меня.
Я думаю imports
, и то, как вы управляете ими, является большой причиной для начальных замедлений. Но есть ли лучшая практика для быстрых, быстро реагирующих скриптов командной строки в Python?
Один скрипт Python, который импортирует os и optparse и выполняет main () для анализа некоторых параметров аргумента, занимает на моей машине 0,160scs только для отображения меню справки ...
Это в 5 раз медленнее, чем просто запуск git!
Edit:
Я не должен был упоминать git, как он написан на C. Но часть Mercurial все еще стоит, и нет, pyc
не кажется большим улучшением (по крайней мере, мне).
Редактировать 2:
Хотя ленивый импорт - ключ к ускорению в Mercurial, он ключ к замедлению
обычные скрипты Python не имеют автоматически генерируемых скриптов с pkg_resources
, например:
from pkg_resources import load_entry_point
Если у вас есть сгенерированные вручную сценарии, которые не используют pkg_resources, вы должны увидеть увеличение скорости как минимум в 2 раза.
Тем не менее! Имейте в виду, что pkg_resources предоставляет хороший способ зависимости версий, поэтому убедитесь, что вы знаете, что его использование в основном означает возможные конфликты версий.