Как использовать тайм-аут при синхронизации функции

Позвольте мне начать с того, что я почти ничего не знаю о python, но мне приходится писать программу на трех разных языках (уже в java и c ++).

Мне нужно уметь время выполнения метода определенное количество раз, а затем печатать время, затраченное на общее время выполнения.

Т.е.

У меня есть функция A (которая выполняет performSearch(arrayTest) где arrayTest представляет собой массив известного размера). A выполняется 10 раз

Мне нужно уметь времени, сколько времени потребовалось до того, как A был выполнен до того, как был выполнен A

Вы можете прочитать, как использовать timeit здесь .

И предположим, что у вас есть функция, называемая performSearch, в том же файле, что и работающий timeit из следующего будет работать.

 import timeit def performSearch(array): array.sort() arrayTest = ["X"]*1000 if __name__ == "__main__": print timeit.timeit("performSearch(arrayTest)","from __main__ import performSearch, arrayTest",number=10) 

Что возвращает:

 0.000162031766607 

Вы могли бы сделать что-то вроде этого:

 import time start = time.time() A() end = time.time() print "Took %f ms" % ((end - start) * 1000.0) 

да ну, просто время.

бывший

 total= 0 for i in range(1000): start= time.clock() function() end= time.clock() total += end-start time= total/1000 

если вы хотите что-то более простое

 import time startMillis = int(round(time.time() * 1000)) print startMillis time.sleep(5) # this is your function that takes time to execute endMillis = int(round(time.time() * 1000)) print endMillis timeTaken = endMillis - startMillis 

Вы можете использовать приведенный ниже код в качестве примера:

 import timeit def string_generator(size): return (size/8) * "ABCDEFGH" if __name__ == "__main__": #the below line runs the statement inside of '' for 100 times (number). print timeit.timeit('"-".join(str(n) for n in range(100))',number=100) #the below line runs the statement inside of '' for 10 times (number) and repeat it 3 times. print timeit.repeat('"-".join(str(n) for n in range(100))',repeat=3,number=10) #if you would like to time a function, you can do it similar to below example: print timeit.timeit("string_generator(2**12)", setup="from __main__ import string_generator") 

Результаты:

 0.00784516334534 [0.0009770393371582031, 0.00036597251892089844, 0.00037407875061035156] 0.414484977722 

Единица для результатов – вторая. Дополнительные примеры существуют на веб-сайте python. введите ссылку здесь

Также вы можете использовать ipython. Тот же пример приведен ниже.

 In [25]: %timeit "-".join(str(n) for n in range(100)) 

Результат:

 10000 loops, best of 3: 22.9 µs per loop 

Как вы можете видеть, блок занимает второе место.