time — 시간 접근과 변환

time — 시간 접근과 변환

time 모듈은 다양한 시간 접근과 변환 기능을 제공해요. 이 모듈의 대부분의 함수는 C 라이브러리의 같은 이름의 함수를 호출해요. 플랫폼마다 C 함수의 의미가 다르므로, 이 모듈의 의미는 일부 제한이 있을 수 있어요. 더 정확한 시계는 time을 참고하고 멀티플랫폼 지원과 성능 차이는 더 정밀한 네이티브 타이머를 참고하세요.

참고: 이 모듈의 많은 함수에서 time 인자는 C 라이브러리의 표준 time_t 값의 초 수로, 1970년 1월 1일 이후로 측정됩니다.

참고: 별도의 용도로 고성능 카운터 기능이 필요하다면 time.perf_counter()를, 특히 프로세서 시간을 측정하려면 time.process_time()을 사용하세요.

출처: Python 표준 라이브러리 — 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_isdst1로 설정되고, 플랫폼이 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_timeformat 매개변수로 지정한 문자열로 변환해요. 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_timegmtime(), 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)

더 알아보기