У меня есть код на python, который работает, но, к сожалению, очень медленный.Кто-то из #python предложил мне запустить код через профилировщик, чтобы увидеть строки и функции, в которых код занимал больше всего времени.
Исходный код Python, который я хочу профилировать, читает из STDIN.Но так как входные данные большие, я скомпилировал входные данные в виде файла, чтобы я мог просто перенаправить его на код Python в оболочке.Поэтому в оболочке я запускаю команду ..
cat input | python pythonsource.py
Проблема в том, что когда я пытаюсь запустить профилировщик в ipython, я не могу найти способ перенаправить ввод в код Python,В оболочке 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 profiler перенаправить ввод в STDIN для чтения из питонского источника.Может кто-нибудь сказать, пожалуйста, как это исправить?Или я правильно понял?Может быть, есть какой-то другой более чистый, более умный способ профилирования кода Python?
И, может быть, то, что я спрашиваю дальше, должно быть частью другого вопроса ... но мне было интересно, что означает ipython, когда он ссылается на "примитив"звонки "в некоторых выходных данных профайлера ipython?
Спасибо.