time — 시간 접근과 변환
time — 시간 접근과 변환
time 모듈은 다양한 시간 접근과 변환 기능을 제공해요. 이 모듈의 대부분의 함수는 C 라이브러리의 같은 이름의 함수를 호출해요. 플랫폼마다 C 함수의 의미가 다르므로, 이 모듈의 의미는 일부 제한이 있을 수 있어요. 더 정확한 시계는 time을 참고하고 멀티플랫폼 지원과 성능 차이는 더 정밀한 네이티브 타이머를 참고하세요.
참고: 이 모듈의 많은 함수에서
time인자는 C 라이브러리의 표준time_t값의 초 수로, 1970년 1월 1일 이후로 측정됩니다.
참고: 별도의 용도로 고성능 카운터 기능이 필요하다면
time.perf_counter()를, 특히 프로세서 시간을 측정하려면time.process_time()을 사용하세요.
본문
Functions (함수)
time.asctime([t]) — 튜플·struct_time을 'Sun Jun 20 23:21:05 1993' 형식의 문자열로 변환해요. t가 주어지지 않으면 localtime()의 현재 시간을 사용합니다. asctime()은 플랫폼의 C ctime() 함수를 사용하므로, 사용된 문자열 서식은 C 라이브러리에 정의된 대로 지역 지정(locale)에 따라 달라질 수 있어요.
time.ctime([secs]) — 에포크 이후 초 수(time.time()이 반환하는 값)를 'Sun Jun 20 23:21:05 1993' 형식의 문자열로 변환해요. secs가 주어지지 않으면 현재 시간을 asctime()에 넘겨서 변환합니다. ctime(secs)은 asctime(localtime(secs))와 동등하고 locale 정보는 asctime()과 동일해요.
time.gmtime([secs]) — 에포크(1970-01-01 00:00:00 UTC) 이후 초로 표현된 시간을 UTC의 struct_time으로 변환해요. secs가 주어지지 않으면 time()을 사용합니다. 윤초는 tm_isdst가 0인 struct_time으로 무시됩니다. 범위를 벗어난 인자는 OverflowError를 발생시켜요.
time.localtime([secs]) — 에포크 이후 초로 표현된 시간을 지역 시간대의 struct_time으로 변환해요. secs가 주어지지 않으면 time()을 사용합니다. dst 플래그가 0이 아니면 tm_isdst는 1로 설정되고, 플랫폼이 DST를 제공하지 않으면 0으로 설정돼요. 범위를 벗어난 인자는 OverflowError를 발생시켜요.
time.mktime(t) — localtime()과 반대 방향으로, struct_time을 에포크 이후 초(float)로 변환하거나, 인자가 struct_time이 아니면 OverflowError·ValueError를 발생시켜요. tm_isdst가 0이면 DST가 아닌 것으로, 1 이상이면 DST로 처리됩니다. tm_isdst가 -1이면 알아서 감지해요.
time.strftime(format[, t]) — 튜플·struct_time을 format 매개변수로 지정한 문자열로 변환해요. t가 주어지지 않으면 localtime()의 현재 시간을 사용합니다. format은 문자열이어야 하고, ValueError가 틀린 format 문자열에 대해 발생할 수 있어요. 지원되는 format 코드는 C 라이브러리와 플랫폼에 따라 달라지며, %y, %Y 등 유닉스 표준을 따릅니다.
time.strptime(string[, format]) — format 코드에 따라 문자열 시간을 struct_time으로 파싱해요. 기본 format은 "%a %b %d %H:%M:%S %Y"이에요.
time.time() -> float — 에포크 이후 경과 초 수를 float로 반환해요.
time.time_ns() -> int — 에포크 이후 경과 나노초 수를 정수로 반환해요. / 버전 3.7에서 추가.
time.perf_counter() -> float — 가장 높은 가용 해상도의 perf counter 값(분수 초 포함)을 반환해요. 시스템 전체의 벽시계 시간이 아닌 짧은 구간 측정을 위한 것으로, 프로세스나 상태(예: 시스템이 절전 중이었던 시간)를 제외하지 않아요. 참조점은 정의되지 않아 절대 시간이 아니라 간격(interval) 측정에만 유용해요.
time.process_time() -> float — 프로세스의 시스템·사용자 CPU 시간의 합(분수 초 포함)을 float로 반환해요. → 절대 참조점 없는 간격 측정용.
time.sleep(secs) — 주어진 초 수만큼 호출 스레드의 실행을 중단(suspend)해요. secs는 0보다 크면 블록하고, 부동 소수점일 수 있어요.
time.clock_getres(clk_id), time.clock_gettime(clk_id), time.clock_gettime_ns(clk_id), time.clock_settime(clk_id, time), time.clock_settime_ns(clk_id, time) — clk_id로 식별되는 시계의 해상도·시간을 가져오거나 설정하는 함수들. 지원되는 clk_id는 시스템에 따라 다릅니다.
time.get_clock_info(name) — 지정한 시계에 대한 네임스페이스 정보를 반환해요.
time.thread_time() -> float — 현재 스레드의 시스템·사용자 CPU 시간의 합을 float로 반환해요.
time.timezone, time.altzone, time.daylight, time.tzname — 지역 시간대 관련 속성들.
시간 값의 구조체 (struct_time)
time.struct_time — gmtime(), localtime(), strptime()이 반환하는 타입으로, 각 속성은 시퀀스와 속성으로 접근할 수 있어요. tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst 순서로 구성됩니다.
시계 (Clocks)
time.monotonic()— 절전 시간을 포함하지 않는 단조(monotonic) 시계로, 절대 기준점이 없는 시간을 float로 반환 (간격 측정용).time.monotonic_ns()— 같은 시계의 나노초 정수 버전.time.perf_counter()/time.perf_counter_ns()— 짧은 구간 측정용 고해상도 시계.time.process_time()/time.process_time_ns()— 프로세스 CPU 시간.time.thread_time()/time.thread_time_ns()— 현재 스레드 CPU 시간.time.time()/time.time_ns()— 벽시계 시간.
플랫폼이 지원하면 clock_gettime 계열과 get_clock_info()로 더 자세한 시계 정보를 얻을 수 있어요.
예시 (Examples)
>>> import time
>>> time.time()
1546274558.0000112
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=31, tm_hour=22, tm_min=42, tm_sec=38, tm_wday=0, tm_yday=365, tm_isdst=0)
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2018-12-31 22:42:38'
줄 바꿈 없이 1초 간격으로 시간을 출력하는 예:
import time
t = time.strftime("%H:%M:%S", time.localtime())
print(t, end="")
time.sleep(1)