파이썬에서 코드 줄 사이에 걸리는 시간을 측정하는 방법은 무엇입니까?
그래서 Java에서는 함수가 실행하는 데 걸리는 시간을 측정하는 방법을 할 수 있습니다.
그러나 파이썬에서는 어떻게 이루어 집니까? 코드 줄 사이의 시작 및 종료 시간을 측정하려면? 이것을하는 것 :
import some_time_library
starttime = some_time_library.some_module()
code_tobe_measured()
endtime = some_time_library.some_module()
time_taken = endtime - starttime
CPU 시간을 측정하려면 time.process_time()
Python 3.3 이상에서 사용할 수 있습니다 .
import time
start = time.process_time()
# your code here
print(time.process_time() - start)
첫 번째 전화는 타이머를 켜고 두 번째 전화는 몇 초가 경과했는지 알려줍니다.
함수도 time.clock()
있지만 Python 3.3부터 사용되지 않으며 Python 3.8에서 제거됩니다.
이 더 나은 같은 도구를 프로파일 링 timeit
하고 profile
, 그러나이 하나가 CPU 시간을 측정하고이 당신에 대해 요구하고있는 것입니다.
대신 벽시계 시간을 측정하려면을 사용하십시오 time.time()
.
import time
라이브러리를 사용할 수도 있습니다 .
start = time.time()
#your code
end = time.time()
time_taken = end - start
print('Time: ',time_taken)
작은 편의 클래스의 도움으로 다음 과 같이 들여 쓰기 된 줄에 소요 된 시간을 측정 할 수 있습니다 .
with CodeTimer():
line_to_measure()
another_line()
# etc...
들여 쓰기 된 줄이 실행을 마친 후 다음을 표시합니다.
Code block took: x.xxx ms
업데이트 : 이제와 클래스를 얻을 수 있습니다 pip install linetimer
후 from linetimer import CodeTimer
. 이 GitHub 프로젝트를 참조하십시오 .
위 클래스의 코드 :
import timeit
class CodeTimer:
def __init__(self, name=None):
self.name = " '" + name + "'" if name else ''
def __enter__(self):
self.start = timeit.default_timer()
def __exit__(self, exc_type, exc_value, traceback):
self.took = (timeit.default_timer() - self.start) * 1000.0
print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')
그런 다음 측정하려는 코드 블록의 이름을 지정할 수 있습니다.
with CodeTimer('loop 1'):
for i in range(100000):
pass
with CodeTimer('loop 2'):
for i in range(100000):
pass
Code block 'loop 1' took: 4.991 ms
Code block 'loop 2' took: 3.666 ms
그리고 그들을 중첩하십시오 .
with CodeTimer('Outer'):
for i in range(100000):
pass
with CodeTimer('Inner'):
for i in range(100000):
pass
for i in range(100000):
pass
Code block 'Inner' took: 2.382 ms
Code block 'Outer' took: 10.466 ms
에 관해서 timeit.default_timer()
는 OS 및 Python 버전에 따라 최고의 타이머를 사용합니다 . 이 답변을 참조하십시오 .
나는 항상 시간, 분, 초 (% H : % M : % S) 형식으로 시간을 확인하는 것을 선호합니다.
from datetime import datetime
start = datetime.now()
# your code
end = datetime.now()
time_taken = end - start
print('Time: ',time_taken)
산출:
Time: 0:00:00.000019
'program story' 카테고리의 다른 글
Linux에서 주어진 프로세스에 대한 개방 FD 제한 확인 (0) | 2020.12.03 |
---|---|
부트 스트랩 글 리피 콘 (0) | 2020.12.03 |
Xcode 6 프로젝트 이름 변경 후 오류 : "종료 코드 1로 링커 명령이 실패했습니다 (호출을 보려면 -v 사용)" (0) | 2020.12.03 |
Visual Studio Code 파일 목록 새로 고침 (0) | 2020.12.03 |
Spring Boot : SpringBootServletInitializer는 더 이상 사용되지 않습니다. (0) | 2020.12.03 |