Python 타이머 구현
프로그램 이 여러 작업 을 수행 하 는 데 걸 린 시간 을 기록 하고 싶 습 니까?
해결 방안
time 모듈 은 시간 과 관련 된 함 수 를 수행 하기 위해 많은 함 수 를 포함 하고 있 습 니 다.그럼 에 도 불구 하고 우 리 는 보통 이 기초 위 에 더 높 은 인 터 페 이 스 를 만들어 타 이 머 를 모 의 한다.예 를 들 면:
import time
class Timer:
def __init__(self, func=time.perf_counter):
self.elapsed = 0.0
self._func = func
self._start = None
def start(self):
if self._start is not None:
raise RuntimeError('Already started')
self._start = self._func()
def stop(self):
if self._start is None:
raise RuntimeError('Not started')
end = self._func()
self.elapsed += end - self._start
self._start = None
def reset(self):
self.elapsed = 0.0
@property
def running(self):
return self._start is not None
def __enter__(self):
self.start()
return self
def __exit__(self, *args):
self.stop()
이 클래스 는 사용자 가 필요 에 따라 시작,정지,리 셋 할 수 있 는 타 이 머 를 정의 합 니 다.그것 은elapsed
속성 에 전체 소모 시간 을 기록 합 니 다.다음은 그것 을 어떻게 사용 하 는 지 보 여 주 는 예 입 니 다.
def countdown(n):
while n > 0:
n -= 1
# Use 1: Explicit start/stop
t = Timer()
t.start()
countdown(1000000)
t.stop()
print(t.elapsed)
# Use 2: As a context manager
with t:
countdown(1000000)
print(t.elapsed)
with Timer() as t2:
countdown(1000000)
print(t2.elapsed)
토론 하 다.이 절 은 시간 기록 과 시간 소모 계산 을 실현 하기 위해 간단 하고 실 용적 인 유형 을 제공 했다.with 구문 과 컨 텍스트 관리자 프로 토 콜 을 사용 하 는 데 도 좋 은 프 리 젠 테 이 션 입 니 다.
시간 계산 에서 밑바닥 의 시간 함수 문 제 를 고려 해 야 한다.일반적으로 사용
time.time()
또는time.clock()
으로 계 산 된 시간 정밀 도 는 운영 체제 에 따라 다르다.그리고 time.perf_counter()
함 수 를 사용 하면 시스템 에서 가장 정확 한 타 이 머 를 사용 할 수 있 습 니 다.상기 코드 에
Timer
류 로 기 록 된 시간 은 시계 시간 이 며 모든 휴면 시간 을 포함한다.이 프로 세 스에 걸 리 는 CPU 시간 만 계산 하려 면 time.process 를 사용 해 야 합 니 다.time()로 대체:
t = Timer(time.process_time)
with t:
countdown(1000000)
print(t.elapsed)
time.perf_counter()
와 time.process_time()
모두 소수 형식의 초 수 시간 을 되 돌려 준다.실제 시간 값 은 아무런 의미 가 없습니다.의미 있 는 결 과 를 얻 기 위해 서 는 두 번 의 함 수 를 실행 한 후에 그들의 차 이 를 계산 해 야 합 니 다.이상 은 파 이 썬 이 타 이 머 를 실현 하 는 상세 한 내용 입 니 다.파 이 썬 타이머 에 관 한 더 많은 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.