본문 바로가기

CS9

[Python] GIL, 파이썬 메모리 관리 Global Interpreter Lock (GIL) GIL은 말 그대로 Interpreter가 한 스레드만 하나의 코드를 실행 시킬 수 있도록 Lock을 걸어주는 것. 따라서 하나의 스레드에 모든 자원을 사용하도록 하고 나머지 쓰레드에는 Lock을 건다 파이썬으로 멀티쓰레딩을 사용하면 오히려 소요시간이 늘어나는 경우가 종종 있음 import threading import random import time def testing(): max([random.random() for _ in range(50000000)]) st = time.time() for i in range(2): testing() print('single: ', time.time()-st) threads = [] st = .. 2021. 11. 5.
[Python] Iterator, Generator Iterable list, set, dict, tuple, str 등과 같이 말그대로 반복 가능한 객체 __iter__() 함수를 가지고 있음 (else, object is not iterable 에러 발생) iter(Iterable)을 통해 Iterator 반환 Iterator Iterable object를 하나씩 차례대로 꺼낼 수 있는 객체 __next__() 함수를 가지고 있음 (else, object is not iterator 에러 발생) next(Iterator)를 통해 iterable object 내부의 값을 하나씩 불러옴 모든 값을 순회한 후에 next() 사용시 StopIteration 예외 발생 Generator Iterator의 특수한 형태, 하위 클래스 return 대신 yield .. 2021. 11. 4.
HTTP/HTTPS 암호화 과정 HTTP 통신 암호화 과정 웹서버에서 웹서버의 공개키와 개인키 생성 웹서버에서 브라우저로 공개키를 복사해줌 (브라우저의 개인키) 생성 (브라우저의 개인키)를 (서버의 공개키)로 암호화 암호화된 키를 웹서버로 전달 웹서버는 (웹서버의 개인키)로 복호화함 (웹서버의 공개키)와 (브라우저의 개인키)로 대칭키를 생성 대칭키로 데이터 암호화 & 통신 문제점 중간자 공격 가능: broser에서 fake 웹서버로 접속, 같은 방법으로 통신 HTTPS 통신 암호화 과정 CA 인증 사용, 브라우저와 웹서버 이외에 CA를 이용함 브라우저는 CA에서 발급한 공개키를 가지고 있음 웹서버에서 CSR(Certificate Signing Request)을 사용하여 공개키를 생성하고 CA로 전달 CA는 CSR을 통해서 인증서를 만들.. 2021. 9. 28.
HTTP status code API를 호출하는 등 웹 서비스에 요청을 보냈을때 반환되는 상태 코드 100 번대 1xx: 정보(Information), 요청을 받았으며 프로세스를 계속 진행함. 2xx: 성공(Success), 요청을 성공적으로 받았음. 3xx: 리다이렉션(Redirection), 요청 완료를 위해 추가적인 조치가 필요함. 4xx: 클라이언트 오류(ClientError), 요청의 문법이 잘못되었거나 없는 페이지를 요청함. 5xx: 서버 오류(ServerError), 유효한 요청에 대해 서버 측에서 문제 발생. 2021. 9. 28.