2014-09-12 3 views
0

datatime.now()를 사용하여 함수의 실행 시간을 측정하고 그 차이를 빼서 부동 소수점 수 (초)를 얻으려고합니다.Python3 datetime 음수

tStart = datetime.now() 

*function* 

tEnd = datetime.now() 

# microseconds for more precision then convert to seconds 
time = tEnd.microsecond - tStart.microsecond 
print(listLength, "\t", '{0:.6f}'.format(time/1000000)) 

예 오류 : I 표준 변환을 정상 초에 다시 변환 할 수 있다는 가정을위한 내가 잘못

3250 0.043427 
3500 -0.940100 
3750 0.075566 

건가요? 이 작업을 수행하는 더 좋은 방법이 있습니까? 나는 초를 사용하여 시도했지만 100 분의 2 초 정밀도에 도달하기 때문에 필요한 6 자리수를 얻지 못합니다.

+1

을하면 경향 = 11 : 11 : 11.000000 및 값 TStart = 11 : 11 : 10.940100, 당신의 코드가 -0.940100 보여줍니다. 이것은 당신이 날짜, 시간, 분, 초를 투입했기 때문입니다. "time = tEnd.microsecond - tStart.microsecond"를 "time = tEnd - tStart"로 수정하려고하면 수정 된 코드가 정답을 표시합니다. –

+0

@ Fumu7 그게 내가 이전에했던 것입니다.하지만 시간을 인쇄 할 때 나는 항상 0.000000을 얻었습니다. 왜냐하면 저는 time.second를 인쇄했기 때문에 microseconds를 사용하고 초로 변환 할 때 작동하는 것 같습니다. 내가 잘못 된 곳을 찾도록 도와 주셔서 감사합니다. – Programmer

+0

수정 된 코드 : "time = tEnd - tStart", "tMicrosec = time.sconds * 1000000 + time.microseconds", "print ('{0 : .6f}'형식 (float (tMicrosec)/1000000)." –

답변

0

두 날짜 사이의 오프셋을 초 단위로 계산하려면 시간 인 모듈이 더 많이 필요할 수 있습니다. 이 때문에 두 날짜는 기본적으로 초 결과 제공 뺀, 유닉스 시대부터 초 단위로 날짜를 표현 :

import time 
tStart = time.time() 
*some code* 
print time.time() - tStart 
+0

시간 모듈의 문제점은 초 단위로 정확하게 측정하지 못한다는 것입니다. – Programmer