[python] 파이썬 속도 테스트-시차-밀리 초

코드 섹션을 빠르게 테스트하기 위해 Python에서 2 번 비교하는 적절한 방법은 무엇입니까? API 문서를 읽으려고했습니다. 타임 델타를 이해하지 못합니다.

지금 까지이 코드가 있습니다.

from datetime import datetime

tstart = datetime.now()
print t1

# code to speed test

tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here



답변

datetime.timedelta 두 datetime의 차이점입니다 … 일 / 초 / 마이크로 초의 기간과 같습니다.

>>> import datetime
>>> a = datetime.datetime.now()
>>> b = datetime.datetime.now()
>>> c = b - a

>>> c
datetime.timedelta(0, 4, 316543)
>>> c.days
0
>>> c.seconds
4
>>> c.microseconds
316543

c.microseconds타임 델타의 마이크로 초 부분 만 반환 한다는 점에 유의하십시오 ! 타이밍 목적으로 항상을 사용하십시오 c.total_seconds().

datetime.timedelta를 사용하여 모든 종류의 수학을 수행 할 수 있습니다. 예 :

>>> c / 10
datetime.timedelta(0, 0, 431654)

유닉스 계열 시스템에서는 …하지만 운영 체제에 따라 다르지만 월 클럭 시간 대신 CPU 시간을 보는 것이 더 유용 할 수 있습니다.


답변

파이썬 2.7부터 timedelta.total_seconds () 메소드가 있습니다. 따라서 경과 된 밀리 초를 얻으려면 :

>>> import datetime
>>> a = datetime.datetime.now()
>>> b = datetime.datetime.now()
>>> delta = b - a
>>> print delta
0:00:05.077263
>>> int(delta.total_seconds() * 1000) # milliseconds
5077


답변

timeit 모듈을 대신 사용할 수 있습니다 .


답변

다음을 사용할 수도 있습니다.

import time

start = time.clock()
do_something()
end = time.clock()
print "%.2gs" % (end-start)

또는 파이썬 프로파일 러를 사용할 수 있습니다 .


답변

나는 이것이 늦다는 것을 알고 있지만 실제로는 다음을 사용하는 것을 정말로 좋아합니다.

import time
start = time.time()

##### your timed code here ... #####

print "Process time: " + (time.time() - start)

time.time()에포크 이후 몇 초를 제공합니다. 이 시간은 초 단위의 표준화 된 시간이므로 종료 시간에서 시작 시간을 빼서 프로세스 시간 (초)을 얻을 수 있습니다. time.clock()벤치마킹에는 좋지만 프로세스 소요 시간을 알고 싶다면 쓸모가 없다는 것을 알았습니다. 예를 들어 “프로세스는 10 개의 프로세서 클럭 단위를 사용합니다”라는 것보다 “프로세스는 10 초가 걸립니다”라고 말하는 것이 훨씬 직관적입니다.

>>> start = time.time(); sum([each**8.3 for each in range(1,100000)]) ; print (time.time() - start)
3.4001404476250935e+45
0.0637760162354
>>> start = time.clock(); sum([each**8.3 for each in range(1,100000)]) ; print (time.clock() - start)
3.4001404476250935e+45
0.05

위의 첫 번째 예에서 time.clock ()의 ​​경우 0.05와 time.time ()의 경우 0.06377의 시간이 표시됩니다.

>>> start = time.clock(); time.sleep(1) ; print "process time: " + (time.clock() - start)
process time: 0.0
>>> start = time.time(); time.sleep(1) ; print "process time: " + (time.time() - start)
process time: 1.00111794472

두 번째 예에서는 프로세스가 1 초 동안 잤더라도 프로세서 시간에 “0”이 표시됩니다. time.time()1 초보다 조금 더 정확하게 표시합니다.


답변

다음 코드는 시간을 표시해야합니다 …

from datetime import datetime

tstart = datetime.now()

# code to speed test

tend = datetime.now()
print tend - tstart


답변

차이점을 간단히 인쇄 할 수 있습니다.

print tend - tstart