일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 쿠버네티스
- Kubernetes
- asgi
- AZ-104
- Python
- Network
- docker
- DevOps
- AWS
- Django
- Service
- elasticsearch
- POD
- dockerfile
- EC2
- Deployment
- WSGI
- leetcode
- ebs
- FastAPI
- asyncio
- ansible
- IAC
- terraform
- AZURE
- EKS
- event loop
- 자바스크립트
- K8S
- AZ-900
- Today
- Total
목록전체 글 (174)
궁금한게 많은 개발자 노트
pydantic은 type annotation을 사용해서 데이터를 검증하고 설정들을 관리하는 library이다.runtime에서 type을 강제하고, type이 유효하지 않을 때 에러를 발생시킵니다. Fast API를 공부하다가, pydantic을 사용한다고 하여 함께 정리해보게 되었습니다. (type hint사용)Type hint는 parameter값이 어떤 자료형으로 들어와야 하는지 코드 상에서 명시하는 것입니다. [ parsing library ]pydantic은 vaildation library가 아닌 parsing 라이브러리입니다.유효성 검사는 제공된 유형 및 제약 조건을 준수하는 모델을 구축하는 목적을 달성하기 위한 수단입니다.즉, pydnatic은 입력 데이터가 아닌 출력모델의 유형과 제..
[ Task 동시 실행 - asyncio.create_task() ] 위에서 이벤트 루프가 태스크들을 동시적으로(Concurrent, not Parallel) 실행한다고 설명하였다. 그런데 사실 asyncio.run() 함수는 기본적으로 하나의 태스크만을 생성하여 실행한다. 따라서 코루틴 체인 과정에서 추가적인 태스크를 생성하여 실행하지 않았다면 현재의 태스크가 중단되었을 때 이벤트 루프는 실행시킬 다른 태스크가 없게 된다. 태스크가 한 개라면 동시적인(Concurrent) 실행을 하는 것이 애초에 말이 되지 않는 것이다. ※ 여기서 말하는 동시 실행이란 Parallel이 아닌 Concurrent를 말한다. 즉, 엄밀한 의미의 동시가 아니라 여러 태스크들을 왔다 갔다 하며 한 쓰레드에서 실행하는 개념인 ..
asyncio에서는 coroutine과 event loop를 사용하여 비동기 프로그래밍을 지원합니다. 다른 언어에서와 마찬가지로 evnet loop는 task들을 loop를 돌면서 하나씩 실행시키는 역할을 합니다. 만약 실행된 task가 특정한 데이터를 요청하고 응답을 대기해야 한다면 이 task는 제어권을 다시 event loop에 넘겨줍니다. 제어권을 받은 event loop는 다음 task를 실행하게 되고, 응답을 받은 순서대로 task queue에 들어가고 재개되는 task들은 멈췄던 부분부터 다시 제어권을 가지고 작업을 마무리합니다. # 여기서 coroutine이 응답을 대기하는 상태에서 제어권을 event loop로 주는 용도로 await를 사용합니다. coroutine으로 task를 만들고,..
[ async, await ] python 3.5에서는 coroutine을 명시적으로 지정하는 async와 yield를 대체하는 await keyword가 추가되었습니다. https://peps.python.org/pep-0492/ PEP 492 – Coroutines with async and await syntax | peps.python.org This proposal introduces new syntax and semantics to enhance coroutine support in Python. This specification presumes knowledge of the implementation of coroutines in Python (PEP 342 and PEP 380). Moti..
파이썬 제약 : GIL Python은 두 개 이상의 스레드가 동시에 실행될 때 두 개 이상의 스레드가 하나의 자원을 동시에 액세스할 때 발생할 수 있는 문제점을 방지하기 위해 GIL(Global interpreter lock)이라는 것을 도입했습니다. 즉, 스레드가 실행될 때, 프로그램 내의 리소스 전체에 락이 걸립니다. 결국 Python 구현에서는 동시에 몇 개의 스레드가 실행이 되던 간에 GIL에 의해서 한 번에 하나의 스레드만 실행됩니다. 멀티 스레드의 경우 문맥교환(Context Switch)에 필요한 리소스까지 고려하면 단일 스레드보다 성능이 떨어지게 되는 것을 확인할 수 있습니다. 기존에는 python에서 동시성 처리를 위해 threading과 multiprocessing을 사용했지만 3.2v..