Измерите време обраде помоћу Питхон-овог модула тимеит.

Бусинесс

Користећи модул тимеит Питхон стандардне библиотеке, можете лако да измерите време извршења процеса у вашем коду. Ово је корисно за брзу проверу.

Овде ће бити речи о следећа два случаја.

  • Измерите у Питхон датотеци:timeit.timeit(),timeit.repeat()
  • Мерење помоћу Јупитер бележнице:%timeit,%%timeit

Други начин је да користите тиме.тиме() за мерење протеклог времена у програму.

Мерења у Питхон датотекама: тимеит.тимеит(), тимеит.репеат()

Као пример, измерићемо време обраде једноставне функције, тест(н), која израчунава збир н узастопних бројева.

import timeit

def test(n):
    return sum(range(n))

n = 10000
loop = 1000

result = timeit.timeit('test(n)', globals=globals(), number=loop)
print(result / loop)
# 0.0002666301020071842

Ако проследите код који желите да мерите као стринг функцији тимеит.тимеит(), он ће бити извршен БРОЈ пута и биће враћено време које је требало.
Подразумевана вредност за број је 1.000.000. Имајте на уму да ако користите подразумевану вредност за процес који одузима много времена, то ће потрајати много времена.

Преношењем глобалс() као глобалних аргумента, код ће бити извршен у глобалном простору имена.
Без овога, тест функције и променљива н нису препознати у горњем примеру.

Код који треба навести може бити објекат који се може позвати уместо стринга, тако да се може навести као ламбда израз без аргумената; у овом случају, глобални аргумент не мора бити специфициран.

result = timeit.timeit(lambda: test(n), number=loop)
print(result / loop)
# 0.00027574066299712287

Јединица за резултат је секунде. Овде је излаз време обраде по извршењу подељено бројем извршења.

Ако не поделите, вредност резултата ће једноставно постати већа како повећавате број извршења.

print(timeit.timeit(lambda: test(n), number=1))
print(timeit.timeit(lambda: test(n), number=10))
print(timeit.timeit(lambda: test(n), number=100))
# 0.0003999490290880203
# 0.0038685189792886376
# 0.03517670702422038

Коришћењем функције тимеит.репеат(), тимеит() се може извршавати више пута. Резултат ће се добити као листа.

repeat = 5
print(timeit.repeat(lambda: test(n), repeat=repeat, number=100))
# [0.044914519996382296, 0.039663890027441084, 0.02868645201670006, 0.022745631984435022, 0.023260265996214002]

Мерење помоћу Јупитер бележнице:%timeit, %%timeit

У Јупитер бележници (ИПитхон) можете користити следеће магичне команде; нема потребе за увозом модула тимеит.

  • %timeit
  • %%timeit

%тимеит

У %тимеит наведите циљни код одвојен размаком као што су аргументи командне линије.

Подразумевано, број и понављање у тимеит.тимеит() се одређују аутоматски. Можете их одредити и са опцијама -н и -р.

Резултати се израчунавају као средња вредност и стандардна девијација.

%timeit test(n)
# 259 µs ± 4.87 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit -r 3 -n 10000 test(n)
# 237 µs ± 6.44 µs per loop (mean ± std. dev. of 3 runs, 10000 loops each)

%%тимеит

Магична команда %%тимеит се може користити за мерење времена обраде целе ћелије.

Као пример, хајде да покренемо исти процес користећи НумПи. Опције -н и -р се могу изоставити.

Пошто меримо време обраде целе ћелије, следећи пример укључује време за увоз НумПи.

%%timeit -r 3 -n 10000
import numpy as np
a = np.arange(n)
np.sum(a)
# 19.7 µs ± 9.57 µs per loop (mean ± std. dev. of 3 runs, 10000 loops each)

Нема потребе да наведете циљни код као аргумент за %%тимеит. Све што треба да урадите је да напишете %%тимеит на почетку ћелије, тако да је најлакши за коришћење.

Copied title and URL