시간과 부호화를 왜 알아야하는가!!!!
1. 데이터에 맞게 시간을 저장하기 위해서
2. 가져온 데이터를 이해하기 위해서 (log데이터, 시계열 데이터 : 주식)
Q. 시간을 주의해야하는 상황?
1. 서비스에서 시간을 이용하는 경우 (API, 라이브러리에 따라)
2. 시간을 저장하는 경우
3. 여러 노드에서 시간을 발생시키는 경우
내 컴퓨터 혹은 서버의 Localtime
date
▶ 2023년 04월 5일 수 오후 1:56:33
UTC (협정 세계시)
영국을 기준으로 시차를 규정한 시간으로 KST는 UTC+9
date -u
▶ 2023년 04월 5일 수 오전 4:57:51
국제 표준 ISO 8601
날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준
date -u +"%Y-%m-%dT %H:%M:%SZ"
▶ 2023-04-05T 05:02:38Z
date +%s
▶ 1680671220import datetime
datetime.datetime.now() # datetime.datetime(2023, 4, 5, 5, 9, 33, 538881
datetime.datetime.utcnow() # datetime.datetime(2023, 4, 5, 5, 9, 8, 129014)
import time
time.time() # 1680671303.7994893
Q. 왜 스케줄링이 필요할까?
A. 과거든 미래든 상관없이 특정 시점을 기준으로 어떤 업무를 실행하기 위해서
APScheduler | cron |
---|---|
파이썬 라이브러리 | 유닉스 도구 |
어플리케이션단으로 많이 사용 | 운영체제 기반으로 많이 사용 |
쉽게 사용 가능 | 많은 곳에서 많은 사람들이 사용중 |
스케줄러가 프로그램의 목적이 되는 경우
다른 애플리케이션의 실행이 주 목적, 스케줄러는 부가기능인 경우
BlockingScheduler
를 사용해보기# pip install apscheduler
# 스케줄러 선언
from apscheduler.schedulers.blocking import BlockingScheduler
# UTC+0 기반으로 실행 Timezone에 매개변수 선언 후 사용
scheduler = BlockingScheduler({'apscheduler.timezome':'UTC'})
# KST 기반으로 실행
# scheduler = BlockingScheduler({'apscheduler.timezone':'Asia/seoul'})
# 스케줄러에 사용될 job 선언
def hello():
print("나는 5초마다 실행돼")
scheduler.add_job(func=hello,trigger='interval',seconds=5)
# trigger 옵션 : date(특정시점에 한번), interval(고정된 간격), cron(cron 문법사용)
# 스케줄러 시작하기
scheduler.start()
❗ 가상환경에서 스케줄러 설치했음에도 파이썬에서 인식이 안되면서 문법오류가 생길때는
ctrl+shift+p
->select interprter 입력
->enter path to~ 누르기
->which python으로 나온 위치로 설정
해주기
◎ 그외 ... 다른 표현들
인코딩 - 디코딩
직렬화 - 역직렬화
피클링 - 역피클링
마샬링 - 언마샬링
JSON 직렬화 - JSON 역직렬화
CSV 직렬화 - CSV 역직렬화
◎ 두가지 방식
인메모리 방식
바이트열 방식
❗ 주의
직렬화-역직렬화 같은 경우에 만약 데이터베이스 트랜젝션을 대상으로 쓴다면 위의 부호화,복호화 의미와는 다름! 트랜젝션의 순서를 맞추기 위해 '직렬화'라고 표현
pickle
라이브러리 이용 파이썬 공식문서-pickle
import pickle
# wb : 바이트형 쓰기 모드
with open('model.pkl','wb') as pickle_file:
pickle.dump(model, pickle_file)
import pickle
model = None
with open('model.pkl','rb') as pickle_file:
model = pickle.load(pickle_file)
data = {
"first_value": {
"name": "odee",
"album": "ZIPLOC"
}
}
import json
# json으로 부호화한 뒤, 객체에 읽을 때
json_data = json.dumps(data)
# json으로 부호화한 뒤, 파일에 쓸 때
# josn 라이브러리는 항상 str로 객체 생성, 따라서 w 사용
with open('json_file.json','w') as json_file:
json.dump(data,json_file)
import json
str_1 = None
with open('json_file.json','r') as json_file:
str_1 = json.load(json_file)
print(str_1)
💌 회고
프로젝트 하기 전에 쉬어가는 시간인듯...ㅎ... 많이 사용하게 될 것 같진 않은데 알아두면 좋을 것 같은거랄까...? 오늘 회고는 짧게. 복호화는 많이 쓸 수도 있겠다 싶음. 스케쥴링은 반복해둘때. 그 날씨 정보 불러오기 이런거 했을 때 사용할 수 있지 않을까?????