Как использовать 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. (я не пробовал)