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