no image
python) asyncio/코루틴, 동시성과 병렬성
병렬성 (Parallelism) task1 ====== task2 ====== task3 ====== 실제 동시에 수행 동시성 (Concurrency) task1 === === task2 === === task3 === === 실제 동시에 수행하진 않고 여러 task를 진행 coroutine co(협동) + routine = 메인 루틴과 동등한 관계를 가진 루틴으로 메인 루틴과 함께 순차적으로 실행된다. asyncio 애플리케이션을 작성하는데 선호되는 방법이다. 서브루틴과 차이는 실행 후 종료되는게 아닌 대기(suspend) 상태가 가능하다는 것, 그래서 동등한 관계라 말한다. 별도의 쓰레드에서 실행되는게 아니므로 문맥 교환 비용이 발생하지 않는다. asyncio 코루틴을 기반으로 비동기 프로그래밍을 위..
2023.12.13
no image
python GC(Garbage Collector)
python Garbage Collector 기본적으로 Reference Counting으로 해제하면서 Generational Garbage Collection이 세대별 임계점마다 동작하는 듯 하다. Reference Counting 참조하는 카운트가 0이 되면 garbage를 정리한다. Generational Garbage Collection 순환 참조의 경우 카운트가 0이 될 수 없는 문제를 해결할 수 있는 GC이다. 세대와 임계점이라는 개념이 있다. import gc print(gc.get_threshold()) #(700, 10, 10) 튜플의 첫 번째부터 0세대, 1세대, 2세대를 나타낸다. 0세대 객체의 수가 700개(임계값)를 넘지 않으면, 순환 참조를 비롯한 garbage들은 메모리에 할당..
2023.10.22