오늘은 python에서 time 을 다루는 방법에 대해서 정리해 보도록 하겠습니다.
1. time 모듈
python의 standard library 모듈에는 시간을 다루는데 필요한 time모듈이 포함되어 있습니다.
따라서, 시간관련함수를 사용하기 위해서 이 모듈을 아래와 같이 import 해주어야 합니다.
import time
2. time() 과 time_ns()
time모듈에 들어있는 time()함수는 현재의 시간을 보여주는데요.
epoch로부터 얼마나 시간이 지났는지를 밀리세컨단위로 보여줍니다.
import time
time.time()
epoch는 1970년 1월 1일부터의 시간을 초단위로 나타낸 것을 가르킵니다.
이 함수에서 return되는 값은 아래와 같이 float 입니다.
정수가 필요할 때는 'time_ns()'함수를 이용해 주면 됩니다.
1979년부터 얼마나 흘렀는지는 알수있지만 현재가 언제인지는 알 수 없는데요.
그것을 표시하기전에, 알아야할 gmtime과 localtime 그리고 struct_time 에 대해서 알아보겠습니다.
3. gmtime 과 localtime 그리고 struct_time
사람이 읽을수 있는 시간으로 변환하는데 사용하는 두가지 함수가 있습니다.
local과 gm으로 구분할 수 있는데요.
gm시간은 Greenwich Time의 약자로서, 세계시간의 표준시가되는 런던의 시간을 말합니다.
우리나라는 이 GM에 9시간을 더하면 local시간이 됩니다.
GM을 더한다음, 9시간을 더할수도 있지만,
localtime()함수를 이용하면 더욱 쉽게 현재 local의 시간으로 나타낼 수 있습니다.
gmtime()이나 localtime()에 인자로 epoch시간을 넣어줄 수 있구요.
인자에 아무것도 넣지 않으면 현재시간에 대한 결과값을 return해 줍니다.
time()함수로 받은 epoch시간을 localtime()으로 변환하면 현재시간을 알 수 있습니다.
localtime을 return받아보면, 아래와 같이 struct_time 형태로 값을 주는 것을 알 수 있습니다.
시간에 해당하는 'tm_hour'와 분에 해당하는 'tm_min', 초에 해당하는 'tm_sec'이 10,000초만큼 다르게 출력됩니다.
struct_time은 아래와 같은 형태로 구성된 object입니다.
위의 print된 결과물에서도 확인할 수 있는데요. 시간을 구성하는 요소에 아래와 같은 attribute 이름으로 접근할 수 있습니다.
위에 나온 값에서 tm_hour에만 접근해보면 다음과 같은데요.
출력해보면 시간만 출력해주는 것을 볼 수 있습니다.
4. strftime()
위와 같이 struct_time으로 시간을 반환받았다면, 원하는 포맷의 텍스트로 표시할 수도 있어야 하는데요.
이 때 사용하는 것이 strftime()함수입니다.
이 함수에 첫번째 인자로 들어갈 값이, string 타입의 format입니다.
사용하는 format string은 아래와 같습니다.
복잡하니 실제로 사용해 보도록 하겠습니다.
결과는 다음과 같이 나오는 것을 볼 수 있습니다.
보통 프로덕트의 디자인마다 시간을 표시하는 방법이 다르므로, 위와같이 format을 정해서 시간을 출력하게 되는데요.
단순한 디버그용이나 시간만 바로 알고싶을때는 ctime()이라는 함수를 사용해주면 됩니다.
빠르고 간단하게 시간을 볼 수 있습니다.
5. sleep()
sleep()함수에서는 해당 쓰레드에서 실행을 지연시킬 때 사용하는 함수입니다.
이상으로 python에서 시간 다루는 방법에 대해서 정리해 보았습니다.
댓글