Користећи модул тимеит Питхон стандардне библиотеке, можете лако да измерите време извршења процеса у вашем коду. Ово је корисно за брзу проверу.
Овде ће бити речи о следећа два случаја.
- Измерите у Питхон датотеци:
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)
Нема потребе да наведете циљни код као аргумент за %%тимеит. Све што треба да урадите је да напишете %%тимеит на почетку ћелије, тако да је најлакши за коришћење.