[데이터 엔지니어링] 시간과 부호화

2022. 4. 15. 16:12AI/Codestates

728x90
반응형

UTC 란?

- UTC는 협정 세계시로 "영국을 기준으로 시파를 규정한 시간"

- UTC가 제정된 건 1972년이고, 당시 영국과 프랑스에서는 표준 시간을 각자의 단어로 사용하고 있었고 협정 세계시에 대한 공통된 단어를 규정해야 하는 순간 두 나라는 협의를 진행하고 그 결과로 공통의 이니셜인 U, T, C를 협정 세계시의 단어로 사용하기로 결정

- UTC±0는 영국 그리니치 천문대의 시간을 기준

- UTC±0 는 그리니치 평균 시라고 하는 GMT ( Greenwich Mean Time ) 로도 많이 표기

KST 란?

- KST는 Korea Standard Time 한국의 표준 시간을 의미함

- UTC±0를 기준으로 9 시간이 차이가 나며, 표기할 때는 UTC+09 혹은 UTC+09:00 로 사용됨

ISO 8601 란?

- 날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준

- ISO 8601에 따른 날짜를 표현할 때는 핲에는 년, 월, 일을 기준으로 날짜를 표기하고 뒤이어서 시, 분, 초, Timezone 을 표기함

- 중요한 것은 하나의 형식으로 지정되어 있지 않다는 것

- 연도는 4개의 숫자로 그 외의 날짜와 시간은 두 개의 숫자로 구성함

- 확장형으로 구분자 ( -, ;, Z, T ) 가 사용될 수 있음

APScheduler

- 공식문서

 

Advanced Python Scheduler — APScheduler 3.9.0.post1.post1 documentation

© Copyright Alex Grönholm. Revision a5e2cadb.

apscheduler.readthedocs.io

- 스케줄링은 크게 두가지 방식으로 작동

  • Cron과 Window 작업 스케줄러처럼 운영체제가 설치될 대 같이 추가되어 스케줄링을 하는 방식
  • Python의 APScheduler 와 Airflow 처럼 애플리케이션 단에서 스케줄링을 조정하는 방식

▶ 설치

$ pip install apscheduler

▶ 스케줄러 선언

- 스케줄러가 프로그램의 목적이 되는 경우

  • BlockingScheduler
from apscheduler.schedulers.blocking import BlockingScheduler

# UTC+0 기반으로 실행하려면 Timezone 에 매개변수를 선언 후 사용
scheduler = BlockingScheduler({'apscheduler.timezone':'UTC'})

# KST 기반으로 실행하는 방법
#scheduler = BlockingScheduler({'apscheduler.timezone':'Asia/seoul'})

- 다른 애플리케이션의 실행이 주 목적이고, 스케줄러는 부가기능으로만 실행하는 경우

  • BackgroundScheduler
  • AsyncIOScheduler
  • GeventScheduler
  • TornadoScheduler
  • TwistedScheduler
  • QtScheduler

▶ 스케줄러에 job 선언

def hello():
    print("hello. My first Scheduler")
scheduler.add_job(func=hello, trigger='interval',seconds=5)

- Trigger 는 세 가지 옵션 중에서 선택할 수 있음

  • date : 특정 시점에 한번 실행하고 싶다면 선택
  • interval : 고정된 간격을 기반으로 실행하고 싶다면 선택
  • cron : Unix 기반의 cron 에서 사용하는 문법을 이용하여 스케줄링하고 싶다면 선택

▶ 스케줄러 시작하기

scheduler.start()

부호화란?

▶ 인메모리 방식

- 파이썬 코드가 실행되고 있는 메모리 안에서 표현되는 방식

- 메모리 안에서 작동하기 편한 방식으로 CPU가 데이터를 효율적으로 처리하기 편함

▶ 바이트열 방식

- 데이터를 파일에 쓰거나, 네트워크에서 전송되기 위한 표현 방식

▶ 인메모리 방식 -> 바이트열 방식

- 부호화, 직렬화, 인코딩, 마샬링

▶ 바이트열 방식 -> 인메모리 방식

- 복호화, 역직렬화, 디코딩, 언마샬링

▶ 머신러닝 모델을 부호화하는 방법

import pickle

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)

X_test = [[4000]]
y_pred = model.predict(X_test)

print(f'{X_test[0][0]} sqft GrLivArea를 가지는 주택의 예상 가격은 ${int(y_pred)} 입니다.')

JSON 데이터로 부호화하는 방법

data = {
    "first_value": {
        "name": "odee",
        "album": "ZIPLOC"
    }
}

import json

# json으로 부호화한 뒤, 객체에 읽을 때
json_data = json.dumps(data)

# json으로 부호화한 뒤, 파일에 쓸 때
with open('json_file.json','w') as json_file:
    json.dump(data,json_file)

 JSON 데이터로 복호화하는 방법

import json

str_1 = None

with open('json_file1.json','r') as json_file:
    str_1 = json.load(json_file)

print(str_1)
728x90
반응형

'AI > Codestates' 카테고리의 다른 글

[Day 60 ~ Day 65] Section 3 Project  (0) 2022.04.26
[Day 59] Sprint Review  (0) 2022.04.15
[데이터 엔지니어링] 배포와 대시보드  (0) 2022.04.15
[데이터 엔지니어링] Flask  (0) 2022.04.12
[데이터 엔지니어링] Docker  (0) 2022.04.12