2016-12-16 2 views
0

Если я что-то вродеУчитывая выход cProfile в произвольной программе python, можно восстановить исходный исходный код?

python -m cProfile -o profile.prof myprogram.py

Можно восстановить исходный код имеет доступ к profile.prof?

+1

Нет, все, что вы получаете, это точки вызова функции. –

+0

Вот что я понял, спасибо. –

ответ

0

Все файлы .prof содержат marshal serialisation той же статистики, которую вы видите, когда вы не используете -o (и, следовательно, распечатывайте статистику).

Это в основном словарь, на основе функции «метка», с характеристиками функций, агрегированными. Функциональная метка определяется как:

def label(code): 
    if isinstance(code, str): 
     return ('~', 0, code) # built-in functions ('~' sorts at the end) 
    else: 
     return (code.co_filename, code.co_firstlineno, code.co_name) 

Таким образом записываются только имя файла, номер строки и имя функции, ничего больше. Вы не можете восстановить полную программу из этого.

Смежные вопросы