Как получить более детальные результаты с помощью cProfile - PullRequest
0 голосов
/ 15 мая 2018

У меня есть небольшой фрагмент, который я профилирую, однако list comprehension указан как один элемент в вызовах

import fileinput
import cProfile

pr = cProfile.Profile()
pr.enable()
x = [float(i) for i in range(0, 10**8)]
pr.disable()
pr.print_stats(sort='time')

выход

     2 function calls in 19.769 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1   19.769   19.769   19.769   19.769 sandboxMinimalCProfile.py:6(<listcomp>)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

Можно ли получить, например, сколько стоит конвертировать в float?

1 Ответ

0 голосов
/ 15 мая 2018

Проблема здесь в том, что float является встроенным, поэтому они не считаются вызовами для профилировщика.

Вы можете попытаться обойти это; однако профилировщик ни в коем случае не предназначен для микропроцессоров. Вместо этого попробуйте timeit стандартный модуль :

$ python3 -m timeit 'float(1000000)'
10000000 loops, best of 3: 0.118 usec per loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...