измерять время, потраченное на строку в Python во время выполнения - PullRequest
0 голосов
/ 03 января 2019

Существует ли какой-либо инструмент, который измеряет, сколько времени затрачивается на каждую строку кода при выполнении во время выполнения, и показывает некоторую визуализацию результата, чтобы помочь разработчику понять, какие строки занимают больше всего времени при выполнении?

Меня интересует такой инструмент для python, и я работаю над pycharm.

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Подойдет ли PyFlame от Uber, вашим целям?

Pyflame - это высокопроизводительный инструмент для профилирования, который генерирует графики пламени для Python.Pyflame реализован на C ++ и использует системный вызов Linux ptrace (2) для сбора информации о профилировании.Он может делать снимки стека вызовов Python без явного инструментирования, то есть вы можете профилировать программу без изменения ее исходного кода.Pyflame способен профилировать встроенные интерпретаторы Python, такие как uWSGI.Он полностью поддерживает профилирование многопоточных программ Python.

0 голосов
/ 03 января 2019

Я думаю, что вы просили способ печати истекшего времени для каждой строки, что крайне неэффективно и сложно (и не нужно).Вам не нужно рассчитывать время, прошедшее для таких строк, как

foo = 1

При этом вы можете установить таймер там, где сомневаетесь, что ваш код работает медленно.Полезный модуль, доступный на pip: pytictoc.

pytictoc содержит класс TicToc, который воспроизводит функциональные возможности tic и toc MATLAB для упрощения синхронизации разделов кода.Под капотом pytictoc использует функцию default_timer из модуля времени Python.

from pytictoc import TicToc
t.tic() #Start timer
# some of your codes here, e.g.
for ii in range(1000):
    pass
t.toc() #Time elapsed since t.tic()

Истекшее время составляет 1,3572 секунды.

0 голосов
/ 03 января 2019

Вы можете использовать timeit, что;

Измерять время выполнения небольших фрагментов кода

import timeit
start_time = timeit.default_timer()
# the line of code you want to  measure the time for
elapsed = timeit.default_timer() - start_time

т.е.

import timeit
start_time = timeit.default_timer()
a = 5 + 2 / 1
b = a + 2
elapsed = timeit.default_timer() - start_time
print"Time taken: ", elapsed

ВЫХОД:

timetaken

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...