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

작은 Python 코드 조각의 실행 시간 측정(timeit)

<시간/>

Python 표준 라이브러리의 timeit 모듈에 있는 Timer 클래스 및 기타 편의 기능은 Python 코드의 작은 비트가 실행하는 데 걸리는 시간을 측정하는 메커니즘을 제공하도록 설계되었습니다. 모듈에는 명령줄 인터페이스가 있으며 프로그램 내에서도 함수를 호출할 수 있습니다.

실행 시간을 측정하는 가장 쉬운 방법은 다음과 같은 편의 기능을 사용하는 것입니다.

timeit()

이 함수는 Timer 클래스의 객체를 반환합니다. 주로 두 개의 매개변수가 필요합니다.

  • stmt - 실행 시간을 측정할 유효한 Python 문을 포함하는 문자열.

  • 설정 - 주로 특정 개체 또는 변수를 초기화하기 위해 한 번 실행되는 Python 문을 포함하는 문자열입니다.

두 문자열 모두 세미콜론(;) 또는 줄 바꿈으로 구분된 여러 명령문을 포함할 수 있으며 둘 다 기본적으로 키워드를 전달하도록 설정되어 있습니다. 'stmt'의 실행 횟수를 나타내는 또 다른 선택적 매개변수 번호가 주어질 수 있습니다.

다음 예제에서는 0-100 범위에서 숫자의 누적 덧셈을 천 번 수행하는 데 필요한 시간을 측정합니다.

import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
print (timeit.timeit(setup = setupcode, stmt = function, number = 1000))

여기서 문자열에는 0-100 범위 내의 숫자가 추가되는 for 루프가 포함됩니다. 이 문자열은 stmt 매개변수입니다. 또한 변수 초기화는 setupcode 문자열에 의해 수행됩니다. timeit() 함수는 필요한 시간을 초 단위로 계산합니다.

출력

0.03055878530880241

타이머 클래스

먼저 Timer 객체를 생성한 후 timeit() 메소드를 실행하면 동일한 결과를 얻을 수 있습니다.

반복()

Timer 클래스에는 timeit()을 반복적으로 호출하는 repeat() 메서드도 있습니다. 모든 통화 목록을 반환합니다.

위 코드의 객체 지향 버전은 다음과 같습니다 -

import timeit
setupcode = "s = 0"
function = '''
for x in range(100):
s = s + x
'''
t = timeit.Timer(setup = setupcode, stmt = function)
print (t.timeit(number = 1000))
print ('calling repeat() :',t.repeat(3,1000))

출력

0.019971274194651528
calling repeat() : [0.023369810546474253, 0.020518432391765262, 0.02075439436427058]

명령줄 인터페이스

앞서 언급했듯이 timeit 모듈에는 명령줄 인터페이스가 있습니다. 모듈 자체는 Python 스크립트 실행을 위해 명령줄에서 -m 옵션을 사용하여 가져옵니다. 다음 명령줄 옵션은 다양한 매개변수 줄 설정 및 실행 코드, 반복 빈도 등을 정의합니다.

-n N, --number =N '문'을 몇 번 실행할지
-r N, --repeat =N 타이머 반복 횟수(기본값 3)
-s S, --setup =S 처음에 한 번 실행되는 문(기본 패스)
-v, --verbose 원시 타이밍 결과를 인쇄합니다. 더 많은 자릿수 정밀도를 위해 반복
-h, --help 짧은 사용법 메시지를 출력하고 종료

다음은 이전에 사용된 예제 코드에 해당하는 명령줄입니다. -

C:\Users\acer>python -m timeit -s "s = 0" "for x in range(100): s = s + x"
10000 loops, best of 3: 22.4 usec per loop