У меня есть код в python, который работает, но, к сожалению, очень медленный. Кто-то на #python предложил мне запустить код через профилировщик, чтобы увидеть строки и функции, в которых код занимал больше всего времени.ipython profiler
Исходный код python, который я хочу профилировать, читается из STDIN. Но поскольку вход большой, я скомпилировал ввод как файл, чтобы я мог просто перенаправить его на код python в оболочке. Таким образом, в оболочке, я выполняю команду ..
cat input | python pythonsource.py
Проблема заключается в том, когда я пытаюсь запустить профайлер в IPython я не могу найти способ, чтобы перенаправить ввод в код питона. В IPython оболочки, я пытался,
run -p -l 1.0 pythonsource.py input (didn't work. simply waits at STDIN for input)
run -p -l 1.0 pythonsource.py << input (didn't work)
run -p -l 1.0 cat input | python pythonsource.py (didn't work.)
Я не уверен, как это сделать, я могу сделать команду IPython профайлер перенаправить ввод в STDIN для pythonsource для чтения. Может кто-нибудь, пожалуйста, скажите мне, как это исправить? Или я совершенно не прав? Может быть, есть еще один более чистый, более умный способ профилирования кода python?
И, возможно, то, о чем я спрашиваю, должно быть частью другого вопроса .. но мне было интересно, что означает ipython, когда он ссылается на «примитивные вызовы» в некоторых выводах профилировщика ipython?
спасибо.
насколько я знаю, трубопроводы в стандартном вводе несовместим с '% run' IPython в. Вам нужно будет выполнить профилирование вручную: http://docs.python.org/library/profile.html#instant-user-s-manual –