파이썬은 인터프리터 언어이며 싱글 스레드로 동작한다. 멀티 스레드 를 사용할 때 파이썬은 GIL(Global Interpreter Lock) 정책에 의해 CPU 작업을 할 때는 하나의 파이썬 코드만 실행할 수 있다. 그래서 자원을 나눠서 처리할 때 멀티 스레딩은 효과가 없다. 대신 I/O 작업 같은 경우는 괜찮음
참고 : https://blog.hanaoto.me/gil-and-threading-in-python/
https://m.blog.naver.com/PostView.nhn?blogId=ossiriand&logNo=220548193193&proxyReferer=https:%2F%2Fwww.google.com%2F
<aside>
💡 멀티 스레드를 하려면 threading(High Level), thread(Low Level) 를 사용해야 함.
멀티 프로세싱을 하려면 mutliprocessing 모듈을 사용한다
</aside>
기본적으로 동기 처리 방식. 그러나 3.4에서 비동기 처리를 지원하는 asyncio 내장 모듈, 3.5에는 async/await 키워드를 공식 지원함
파이썬 언어를 Interpreting 하는 구현체로 CPython이 있음. 기본적으로 파이썬은 C언어로 만드어져있기 때문에 어찌 보면 당연하다. 그러나 다른 구현체에도 해석이 가능함. CPython보다 빠르다고 소문난 Pypy , jvm위에서 동작하는 Jython 등이 있다.
https://medium.com/dmsfordsm/garbage-collection-in-python-777916fd3189
https://medium.com/dmsfordsm/garbage-collection-in-python-777916fd3189
파이썬은 내부에서 가비지 콜렉터(GC)를 통해 메모리를 관리한다. 이때 객체의 참조횟수 카운팅(레퍼런스 카운팅)을 세서 더 이상 참조되지 않을 때 메모리에서 객체를 제거한다. 만약 순환참조가 발생한다면 가비지 콜렉터에서
[참고] 파이썬은 가비지 컬렉션 방식으로 Reference Counting 이 외에도 Generational Garbage Collection을 사용한다.
[관리 팁]