Что означает этот вывод Python cProfile? - PullRequest
0 голосов
/ 26 мая 2011
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000   65.417   65.417 <string>:1(<module>)
    1   43.675   43.675   65.417   65.417 primenumber_o.py:3(main)
    1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
99999   21.742    0.000   21.742    0.000 {range}
    2    0.000    0.000    0.000    0.000 {time.time}

В частности, третья строка.Я прочитал на cProfile, но ничего не объяснил, что означает эта строка.Он также не содержит ключевых слов, которые я мог бы найти в Google, поэтому я в тупике.

Скрипт Python, который я профилирую, находит простые числа.провел в цикле, в строке 5. Что я не понимаю, так это то, что делают остальные 43 секунды.

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Третья строка - это весь код в файле, который не range().

0 голосов
/ 26 мая 2011

Я не использовал cProfile, но мне кажется, что он назначает время выполнения в сегменты на основе имен функций.21 секунда используется встроенной функцией range() в операторе for.Остальные 43 секунды не находятся в отдельной именованной функции, поэтому считается, что имя, в которое они попадают, равно main, например:

if __name__ == '__main__':
    ...

Если вы поместите тело цикла вфункция, 43 секунды (или большинство из них) будет отображаться там.Если вы разделите тело на несколько функций, вы получите более детальное профилирование.

...