cProfile guardar los datos en un archivo provoca jumbles de caracteres

Estoy usando cProfile en un módulo llamado bot4CA.py, así que en la consola escribo:

python -m cProfile -o thing.txt bot4CA.py 

Después de que el módulo se ejecuta y sale, crea un archivo llamado thing.txt y cuando lo abro, hay algo de información allí, y el rest es una mezcla de caracteres en lugar de un archivo de datos perfectamente organizado que es lo que quiero. ¿Alguien sabe cómo usar cProfile y termina con una tabla de datos perfectamente organizada, como cuando se usa normalmente en la línea de comandos, excepto en un archivo? Aquí hay un ejemplo de algunos de los datos en el archivo .txt:

 {( s) build\bdist.win32\egg\colotwig\winterm.pyi' t reset_all( ii gpàÂs% ?geOÙHÌœE?{( s- build\bdist.win32\egg\colotwig\ansitowin32.pyi¥ 

Lo que realmente quiero es lo que sucede cuando invocas cProfile.run () que resulta en una tabla ordenada impresa que muestra los tiempos de ejecución de todas las funciones excepto en lugar de impresas, guardadas en un archivo ya que este progtwig es bastante grande y se ejecuta mucho de funciones.

Debe usar el módulo pstats para analizar este archivo y extraer información en un formato fácil de usar. Por ejemplo:

 import pstats p = pstats.Stats('thing.txt') p.sort_stats('cumulative').print_stats(10) 

Está todo en la documentación , por supuesto. Revise el “manual del usuario instantáneo” que está allí, se explica todo.

para volcar drásticamente las estadísticas:

 echo 'stats' | python3 -m pstats path/to/cprofile_output_file 

pstats también tiene una concha

 $ python3 -m pstats path/to/cprofile_output_file 

Dentro podemos emitir stats u sort órdenes como:

 $ 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() 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 ): ======================================== EOF add callees callers help quit read reverse sort stats strip 

Una micro característica que disfruté aquí es que puedo invertir el orden de forma nativa <3

 echo -e 'sort cumtime\nreverse\nstats' | python3 -m pstats path/to/cprofile_output_file