Python 스크립트가 실행을 완료하는 데 소요된 시간 확인
파이썬 스크립트에 다음 코드가 있습니다.
def fun():
#Code here
fun()
이 스크립트를 실행하고 실행하는 데 몇 분이 걸렸는지 확인하고 싶습니다.이 스크립트를 실행하는 데 얼마나 많은 시간이 걸렸는지 어떻게 알 수 있습니까?예를 들어주시면 정말 감사하겠습니다.
from datetime import datetime
startTime = datetime.now()
#do something
#Python 2:
print datetime.now() - startTime
#Python 3:
print(datetime.now() - startTime)
Linux 또는 UNIX에서 명령줄에서 스크립트를 실행합니까?그런 경우에는, 당신은 그냥
time ./script.py
import time
start = time.time()
fun()
# python 2
print 'It took', time.time()-start, 'seconds.'
# python 3
print('It took', time.time()-start, 'seconds.')
은 제가주하일은을 사용하는 입니다.clock()또는time()time도서관. clock시간을 , 측정: 인프리시간, 반면time시스템 시간을 측정합니다.추가 주의사항은 문서에서 확인할 수 있습니다.
예를들면,
def fn():
st = time()
dostuff()
print 'fn took %.2f seconds' % (time() - st)
또다음사수있다니습용할을는다있니▁or수습,atively▁use▁you▁altern를 사용할 수도 있습니다.timeit나는 종종 그것을 사용합니다.time접근할 수 에 접근할 수 당신이 가능한 을 잡고 , 내가얼나빨할따접만지근하, 만당분코타잡있이면고다을밍드의가능한리약이신마에리라지는있수▁approach,,.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으로 간단히 나눌 수 있습니다. 을 초 단위든 읽을 수 있는할 수 .timedelta그리고.str그것:
runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)
그리고 그것은 그 형태의 무언가를 인쇄할 것입니다.[D day[s], ][H]H:MM:SS[.UUUUUU]타임 델타 문서를 확인할 수 있습니다.
마지막으로, 만약 당신이 실제로 당신의 코드를 프로파일링하고 싶다면, Python은 프로파일 라이브러리도 이용할 수 있게 합니다.
import time
startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))
이전 코드는 저에게 문제없이 작동합니다!
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))
Time it 모듈을 사용합니다.그것은 매우 쉽습니다.파이썬 셸에서 활성화되도록 example.py 파일을 실행하면 셸에서 함수를 호출할 수 있습니다.작동하는지 확인해 보십시오.
>>>fun(input)
output
좋습니다. 작동합니다. 이제 시간을 가져와서 타이머를 설정합니다.
>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>
이제 타이머가 설정되었습니다. 시간이 얼마나 걸리는지 확인할 수 있습니다.
>>>t.timeit(number=1)
some number here
이제 이 기능을 실행하는 데 몇 초(또는 그 이하)가 걸렸는지 알 수 있습니다.단순 함수인 경우 t.timeit(숫자=1000)(또는 임의의 숫자!)로 늘린 다음 답을 숫자로 나누어 평균을 구할 수 있습니다.
이것이 도움이 되길 바랍니다.
퓨어 파이썬
것은 더나은것입니다.time.perf_counter():
t0 = time.perf_counter()
fun()
t1 = time.perf_counter()
print(t1-t0)
# and if you really want your answer in minutes:
print(f"In minutes: {(t1-t0)/60}")
문서:
time.perf_counter()→ float성능 카운터의 값(분수초)을 반환합니다. 즉, 짧은 지속 시간을 측정하기 위해 사용 가능한 분해능이 가장 높은 시계입니다.여기에는 수면 중 경과된 시간이 포함되며 시스템 전체에 적용됩니다.반환된 값의 기준점이 정의되어 있지 않으므로 두 호출의 결과 차이만 유효합니다.
플로트 유형으로 인한 정밀도 손실을 방지하는 데 사용합니다.
버전 3.3의 새로운 기능.
버전 3.10에서 변경됨: Windows에서는 이제 이 기능이 시스템 전체에 적용됩니다.
주피터 노트북:%timeit&%time마술
주피터 노트북(예: Google Colab)에서 작업하는 경우 IPython Magic Commands를 사용할 수 있습니다.
예:
import time
import numpy as np
np.random.seed(42)
def fun():
time.sleep(0.1+np.random.rand()*0.05)
그런 다음 별도의 셀에서 기능의 시간을 여러 번 지정합니다.
%timeit fun()
출력:
10 loops, best of 5: 120 ms per loop
기능의 시간을 한 번만 지정하려면:
%time fun()
출력:
CPU times: user 0 ns, sys: 621 µs, total: 621 µs
Wall time: 114 ms
마법 명령에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
함수 프로그래밍을 사용하여 이 작업을 수행하는 방법은 다음과 같습니다. 전역 네임스페이스 오염 없음, 복수의 적절한 변형, 단 하나의 데코레이터만 사용됨, 모두 4개의 가져오기만 있음, 3.6(유형 힌트가 제거된 경우) 이후 버전의 파이썬과 호환됩니다.모든 스크립트에 다음 기능이 있습니다.
import re
import time
from functools import wraps
from typing import Callable, ParamSpec, TypeVar
P = ParamSpec("P")
R = TypeVar("R")
def time_function(func: Callable[P, R]) -> Callable[P, R]:
@wraps(func)
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
"""Time scripts using a decorator - no global namespace pollution, proper
inflection of plurals, only only one decorator call,
all with only four imports."""
starting_time = time.perf_counter()
name = func.__name__
name = "main function" if name == "main" else f'function "{name}"'
print(time.strftime("%H:%M:%S", time.localtime()) + f": Starting {name}...")
result = func(*args, **kwargs)
# Formatting with proper inflection of plurals, using regular expressions
runtime = time.strftime(
"%#H hours, %#M minutes and %#S seconds",
time.gmtime(time.perf_counter() - starting_time),
)
for old, new in (
(r"^0 hours, ", ""),
(r"^1 hours", "1 hour"),
(r"\b0 minutes and ", ""),
(r"\b1 minutes", "1 minute"),
(r"\b1 seconds", "1 second"),
(r"(?: and|,) 0 seconds", ""),
(r"^0 seconds", "less than a second"),
):
runtime = re.sub(old, new, runtime)
# Make the 0-second or 0-minute situation sound more natural
if ("second" in runtime) != ("minute" in runtime):
runtime = runtime.replace(", ", " and ")
print(f"{name} took {runtime} to run.".capitalize())
return result
return wrapper
샘플 입력:
@time_function
def main() -> None:
time.sleep(15)
if __name__ == '__main__':
main()
출력:
20:58:28: Starting script...
The script took 15 seconds to run.
샘플 입력:
@time_function
def main() -> None:
time.sleep(61)
if __name__ == '__main__':
main()
출력:
22:47:29: Starting script...
The script took 1 minute and 1 second to run.
시간 및 날짜/시간 패키지를 사용합니다.
이 스크립트를 실행하고 실행에 소요된 시간(분)을 확인하려는 사용자가 있는지 확인합니다.
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))
위의 코드는 저에게 적합합니다.이것이 도움이 되길 바랍니다.
time it 모듈을 가져오고 시간을 함수로 지정할 스크립트 부분(예: main()))을 정의합니다.
import timeit
BF = timeit.timeit('BruteForce_MemoryEfficiency.main()', setup='import BruteForce_MemoryEfficiency', number=1)
print(BF)
기능은 1회(숫자=1) 실행되며 필요한 시간이 측정됩니다.
언급URL : https://stackoverflow.com/questions/6786990/find-out-time-it-took-for-a-python-script-to-complete-execution
'programing' 카테고리의 다른 글
| IPA 재서명(iPhone) (0) | 2023.07.05 |
|---|---|
| 레이저 뷰 엔진이 장착된 ASP.NET MVC 3의 부분 뷰에서 특정 섹션으로 컨텐츠 주입 (0) | 2023.07.05 |
| nodejs가 marida db에 연결할 수 없습니다.명령줄을 통해 연결 가능 (0) | 2023.07.05 |
| Mongo 오류:잘못된 작업, 대량 작업 없음 (0) | 2023.07.05 |
| Java Oracle 예외 - "목록의 최대 식 수는 1000개입니다." (0) | 2023.07.05 |