CProfile сохранение данных в файл вызывает перебои символов
Я использую cProfile в модуле с именем bot4CA.py, поэтому в консоли я печатаю:
python -m cProfile -o thing.txt bot4CA.py
После запуска и выхода модуля он создает файл с именем thing.txt, и когда я его открываю, там есть некоторая информация, а остальное - беспорядок символов, а не аккуратно организованный файл данных, который является тем, что я хотеть. Кто-нибудь знает, как использовать cProfile и заканчивается аккуратно организованной таблицей данных, например, когда она обычно используется в командной строке, кроме как в файле?
Вот пример некоторых данных в файле .txt:
{( s) build\bdist.win32\egg\colorama\winterm.pyi' t reset_all( i i gpàÂs% ?geOÙHÌœE?{( s- build\bdist.win32\egg\colorama\ansitowin32.pyi¥
То, что я действительно хочу, это то, что происходит, когда вы вызываете cProfile.run(), что приводит к аккуратно организованной таблице, отображающей время выполнения всех функций, кроме как вместо печати, сохраненной в файле, поскольку эта программа довольно большая и выполняет множество функций.
Ответы
Ответ 1
Вы должны использовать модуль pstats
для анализа этого файла и извлечения из него информации в удобном для него формате. Например:
import pstats
p = pstats.Stats('thing.txt')
p.sort_stats('cumulative').print_stats(10)
Все это в документации, конечно. Переходите к "руководству пользователя мгновенного пользователя" там, он объясняет все.
Ответ 2
чтобы сбросить статистику
echo 'stats' | python3 -m pstats path/to/cprofile_output_file
Pstats также имеет оболочку
$ python3 -m pstats path/to/cprofile_output_file
внутри мы можем выдавать stats
или sort
команды следующим образом:
$ python3 -m pstats path/to/cprofile_output_file
Welcome to the profile statistics browser.
prof.txt% sort cumtime
prof.txt% reverse
prof.txt% stats
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 63:1(<module>)
1 0.000 0.000 0.000 0.000 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 {built-in method builtins.print}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
prof.txt% ?
Documented commands (type help <topic>):
========================================
EOF add callees callers help quit read reverse sort stats strip
микро функция, которая мне здесь понравилась, я могу изменить порядок сортировки изначально <3
echo -e 'sort cumtime\nreverse\nstats' | python3 -m pstats path/to/cprofile_output_file