Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

예제와 함께 Python에서 Timeit?

<시간/>

Python은 Python 코드 조각의 실행 시간을 측정하는 다양한 방법을 제공합니다. 한 가지 방법은 파이썬 내장 시간 모듈을 사용하여 프로그램 실행 전후 시간을 절약하는 것입니다.

파이썬 타임잇

일부 프로그램이 실행 중일 때 많은 프로세스가 백그라운드에서 실행되어 해당 코드를 실행 가능하게 만듭니다. time 모듈은 백그라운드 프로세스 실행 시간을 계산하지 않지만 정확한 시간 성능 측정이 필요한 경우 시간이 필요한 모듈입니다.

timeit 모듈은 코드를 약 100만 번(기본값) 실행하며 해당 코드를 실행하는 데 걸리는 최소 시간을 고려합니다.

timeit을 사용하여 Python 실행 시간 가져오기

timeit 모듈은 여러 가지 방법으로 사용할 수 있습니다. 가장 간단한 방법 중 하나는 python CLI에서 직접 사용하는 것입니다.

먼저 timeit 모듈과 함께 python CLI를 사용하기 시작합니다. CLI를 사용하면 모듈 자체가 동일한 코드 조각에 대해 수행되는 반복 횟수를 결정한다는 것을 알 수 있습니다.

예시 1

C:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))" 1000개 루프, 최고 3개:루프당 290usecC:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))" 1000개 루프, 최고 3:루프당 292 usecC:\Users\rajesh>python -m timeit "'-' .join(str(n) for n in range(200))"1000개 루프, 3개 중 최고:루프당 294usec

예시 2

다음으로 우리는 다른 간단한 예제로 timeit을 소개하지만 먼저 "import timeit" 문으로 timeit 모듈을 가져와야 합니다. 위와 같은 명령줄 구문을 사용하지 않는 경우에 필요합니다.

#import timeit moduleimport timeit# 시간이 지정되는 명령어.print('x' * 5)print('x' + 'x' + 'x' + 'x' + 'x')# 명령문에 대해 timeit 호출 그리고 반환된 시간을 출력합니다.# ... 선택적 반복 횟수를 지정합니다.print(timeit.timeit("y ='x' * 3", number=10000000))print(timeit.timeit("xy ='x' + 'x' + 'x' + 'x' + 'x'", 숫자 =10000000))

위에서 인용된 문자열의 명령문을 timeit.timeit 메서드에 전달한 다음 숫자 인수를 지정하여 반복 횟수를 늘립니다.

출력

위의 프로그램을 처음 실행할 때 생성된 출력:

xxxxxxxxx0.90411368966266350.7712796073957123

위의 프로그램을 두 번째 실행할 때 출력이 생성됨:

xxxxxxxxx0.73170158744277510.7312688195585995

위의 프로그램을 세 번째 실행하면 출력이 생성됩니다.

xxxxxxxxx0.72408624111728240.7255863890794246

우리는 위의 프로그램을 여러 번(3회) 수행했으며 실행 시간이 단축되었음을 알 수 있습니다. 하나는 수동으로 하지 않고 프로그램을 통해 반복해보자:

#import timeit moduleimport timeit# 문에서 timeit을 호출하고 반환된 시간을 인쇄합니다.# ... 선택적 반복 횟수를 지정합니다.print(timeit.repeat("y ='x' * 3", number=10000000, 반복 =5))print()print(timeit.repeat("xy='x' + 'x' + 'x' + 'x' + 'x'", 숫자 =10000000, 반복 =5))

출력

 [0.7303736343436382, 0.7213687552991258, 0.7362311105941466, 0.7293136666273243, 0.7278277732068212] 0.7388334197158559, 0.7378481457977326, 0.9486733868277772, 0.735295442480929, 0.7398226849056382가]  

timeit 모듈을 사용하여 여러 문 실행:

timeit 모듈과 함께 여러 문을 사용할 수 있습니다. 세미콜론을 사용하여 각 문을 구분합니다. 코드를 작성하는 가장 좋은 방법은 아니지만 더 긴 코드 조각을 지정하는 데 도움이 됩니다.

#import timeit moduleimport timeit# 여러 문장에 세미콜론 사용.print(timeit.repeat("x =2; x *=2", number=100000000))print(timeit.repeat("x =1; x * =4", 숫자=100000000))

출력

<미리>[24.859605879029118, 23.58795536845994, 23.95826726353284][22.706399747603264, 21.28019599422457]

방법을 사용하여 Timeit 모듈에서 설정:

setup 인수를 지정하여 timeit에서 사용자 정의 메소드를 사용할 수 있습니다. 이 인수에서는 호출하는 메서드를 나타내는 import 문을 지정합니다.

#import timeit moduleimport timeitdef func1():return 1def func2():return sum([-1, 0, 1, 1])# Test methods.print(func1())print(func2())# 통과 methods.print(timeit.repeat("func1()", setup="from __main__ import func1"))print(timeit.repeat("func2()", setup="from __main__ import func2"))를 호출하기 위한 설정 인수 

위의 프로그램에서 func2() 메서드에 대해 func1() 메서드를 벤치마킹합니다.

출력

11[0.44798489246658874, 0.4411512652046069, 0.44570416580426686][1.5836225579831929, 1.57123992 

func1()이 더 적은 작업을 수행하므로 훨씬 빠르게 실행됩니다.

요약

위에서 우리는 CLI와 스크립트를 사용하여 timeit 모듈을 사용하여 작은 파이썬 코드의 성능을 측정하는 방법을 보았습니다.