Как использовать cProfile с nosetest --with-profile?
nosetest --with-profile --profile-stats-file output
Вывод не может считываться с помощью runnake, потому что nosetest использует hotshot, если я хочу сгенерировать файл, который можно прочитать с помощью runnake, мне нужно его преобразовать так:
st = hotshot.stats.load('output')
st.dump_stats ( 'output_new')
Могу ли я запустить тест с помощью cProfile непосредственно для чтения с помощью runnake?
Извини за мой английский.
Спасибо!
Ответы
Ответ 1
Развивая ответ @squid, вы можете использовать плагин носа под названием nose-cprof
для замены профилировщика носа, hotshot, with Cprofile.
Чтобы установить его:
pip install nose-cprof
Затем вызовите нос следующим образом:
nosetests --with-cprofile
Он должен сгенерировать выходной файл cProfile, который затем можно проанализировать с помощью таких инструментов, как runsnakerun
.
Ответ 2
@cihanpesend ответ не совсем сработал у меня (cProfile не смог найти "nosetests" ), но у меня был успех в Linux, используя:
python -m cProfile -o profile.out `which nosetests` .
Полученный результат отлично работает в runnake.
(Предположительно, в Windows вы можете заменить which nosetests
на жестко закодированный путь к питону верхнего уровня nosetests script.)
Я думаю, что вы правы в том, что выход из профилирования hotshot nosetests несовместим с runnake. Разумеется, эти двое не играют хорошо вместе из коробки для меня.
Ответ 3
У меня нет информации о nosetest, кроме того, что это проект python. Таким образом,
python -m cProfile -o outputfile nosetest
Затем
runsnake outputfile
RunSnakeRun чрезвычайно полезен для визуализации профилировщика.
Примечание: для запуска runsnake
необходимо установить wx и numpy.
обновление: из комментария omikron; runnakerun не может поддерживать вывод профиля python3. (я не пробовал)
Ответ 4
Или вы можете попробовать плагин носа-cprof: https://github.com/msherry/nose-cprof
Он заменяет hotshot на cProfile