파이썬 스크립트가 실행을 완료하는 데 걸린 시간 알아보기


143

파이썬 스크립트에 다음 코드가 있습니다.

def fun(): 
  #Code here

fun()

이 스크립트를 실행하고 몇 분 안에 실행하는 데 걸린 시간도 확인하고 싶습니다. 이 스크립트를 실행하는 데 걸린 시간을 어떻게 알 수 있습니까? 예를 들어 정말 감사하겠습니다.


5
"파이썬 기능 타이밍"에 대한 검색 첫 히트 : daniweb.com/software-development/python/code/216610
Piskvor 건물 왼쪽

cProfile 을 사용할 수도 있습니다 . 각 기능을 개별적으로 시간을 정할 수있는 옵션을 제공합니다.
Adam Rosenthal

답변:


263
from datetime import datetime
startTime = datetime.now()

#do something

#Python 2: 
print datetime.now() - startTime 

#Python 3: 
print(datetime.now() - startTime)

5
3.6.1에서 작동하는 Python이 처음입니다. 참고 날짜 시간에는 더 이상 now 속성이 없습니다.
WizzleWuzzle

5
@WizzleWuzzle datetime.now()from datetime import datetime단순히 import datetime(Python 3.6.4에서 확인한 것)이 아니라 작동합니다 .
Paul Wicking

130

Linux 또는 UNIX의 명령 행에서 스크립트를 실행합니까? 이 경우, 그냥 사용할 수 있습니다

time ./script.py

2
time -p ./script.py -p파이프 라인을위한 깃발
Joy

1
파이프 라인이 우리에게 어떤 도움이됩니까?
ak3191

time python myScript.py for windows 출력 시간은 초 단위로 실행 시간이됩니다 : 38.509970903396606 실제 0m38.792s 사용자 0m0.015s sys 0m0.046s
Aryashree Pritikrishna

64
import time
start = time.time()

fun()

# python 2
print 'It took', time.time()-start, 'seconds.'

# python 3
print('It took', time.time()-start, 'seconds.')

5
마지막 줄은 아마도 print('It took {0:0.1f} seconds'.format(time.time() - start))python 3.x에서 읽을 것입니다 .
Chris Mueller

3
@ChrisMueller 나는 python2.7에서 일하고있었습니다. 사람들이 두 버전을 모두 볼 수 있도록 여기에 의견을 남기겠습니다.
Double AA

15

내가 주로하는 일은 사용하는 것입니다 clock()또는 time()으로부터 time라이브러리입니다. clock통역 시간을 time측정하고 시스템 시간 을 측정합니다. 추가 경고는 문서 .

예를 들어

def fn():
    st = time()
    dostuff()
    print 'fn took %.2f seconds' % (time() - st)

또는을 사용할 수 있습니다 timeit. 필자는 time속도가 빠르기 때문에 접근 방식을 자주 사용 하지만 격리 가능한 코드 조각을 타이밍으로 사용하는 경우,timeit 편리합니다.

로부터 timeit 워드 프로세서 ,

def test():
    "Stupid test function"
    L = []
    for i in range(100):
        L.append(i)

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()

그런 다음 몇 분으로 변환하려면 간단히 60으로 나눌 수 있습니다. 스크립트 런타임을 몇 초이든 며칠이든 쉽게 읽을 수있는 형식으로하려면 a timedelta및 로 변환 할 수 있습니다 str.

runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)

그러면 형식의 무언가가 인쇄됩니다 [D day[s], ][H]H:MM:SS[.UUUUUU]. timedelta 문서를 확인할 수 있습니다 .

그리고 마지막으로 실제로 프로파일을 작성하는 것이 코드를 프로파일 링하는 경우 Python은 프로파일 라이브러리 도 사용할 수있게합니다 .


15
import time 

startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))

이전 코드는 문제없이 작동합니다!


14
import sys
import timeit

start = timeit.default_timer()

#do some nice things...

stop = timeit.default_timer()
total_time = stop - start

# output running time in a nice format.
mins, secs = divmod(total_time, 60)
hours, mins = divmod(mins, 60)

sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))

50 초 동안 출력되는 값은 "0 : 0 : 50"입니다.
htzfun

10

timeit 모듈을 사용하십시오. 이것은 정말 쉽습니다. example.py 파일을 실행하여 Python Shell에서 활성화되면 이제 쉘에서 함수를 호출 할 수 있습니다. 작동하는지 확인하십시오

>>>fun(input)
output

좋아요, 작동합니다. 이제 timeit을 가져오고 타이머를 설정하십시오.

>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>

이제 타이머를 설정하고 시간이 얼마나 걸리는지 확인할 수 있습니다

>>>t.timeit(number=1)
some number here

그리고 거기서 우리는 그 기능을 실행하는데 몇 초 (또는 더 적은)가 걸 렸는지 알려줄 것입니다. 간단한 함수 인 경우 t.timeit (number = 1000) (또는 임의의 수!)로 늘린 다음 답을 숫자로 나누어 평균을 구할 수 있습니다.

이게 도움이 되길 바란다.


0

시간 및 날짜 / 시간 패키지를 사용하십시오.

누구나이 스크립트를 실행하고 몇 분 안에 실행하는 데 걸린 시간을 확인하려면

import time
from time import strftime
from datetime import datetime 
from time import gmtime

def start_time_():    
    #import time
    start_time = time.time()
    return(start_time)

def end_time_():
    #import time
    end_time = time.time()
    return(end_time)

def Execution_time(start_time_,end_time_):
   #import time
   #from time import strftime
   #from datetime import datetime 
   #from time import gmtime
   return(strftime("%H:%M:%S",gmtime(int('{:.0f}'.format(float(str((end_time-start_time))))))))

start_time = start_time_()
# your code here #
[i for i in range(0,100000000)]
# your code here #
end_time = end_time_()
print("Execution_time is :", Execution_time(start_time,end_time))

위 코드는 저에게 효과적입니다. 이게 도움이 되길 바란다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.