[ Python ] threading 에 대해서 잘 설명된 글

2019. 8. 11. 16:42분석 Python/구현 및 자료

728x90

https://soooprmx.com/archives/8834

 

파이썬의 스레드 사용법 · Wireframe

멀티스레드를 사용한 병렬처리는 concurrent.futures의 ThreadPoolExecutor를 사용하면 스레드 풀 관리에서부터, 처리 결과들의 동기화에 이르기까지의 여러 작업을 간단한 API를 통해서 처리할 수 있다. 특히 이 API의 경우 멀티스레드와 멀티프로세스에서 동일한 형태로 디자인되어 있고, 실제 사용시에는 어떤 구현을 선택할 것인지에 따라 Pool관리자의 클래스만 변경하면 되기 때문에 편리하게 사용할 수 있다. 하지만 이 API는 특정한

soooprmx.com

사이트에 좋은 자료가 참 많다!

 

 

흔히들 파이썬의 Thread는 Global Interpreter Lock이라는 제약 때문에 써봐야 아무런 효과가 없는 것으로 오해하기 쉬운데, 일련의 데이터를 병렬적으로 분산 처리하여 취합하는 패턴이 아닌 non-block의 형태로 워커 스레드들을 돌리는 패턴은 서버나 데몬 혹은 GUI를 사용하는 앱에서는 꼭 필요한 부분이니 어떻게 사용하는지 정도는 알아둘 필요가 있겠다.

 

또한 Thread 클래스를 포함한 여러 기본제공 API들은 그 자체로도 충분한 사용성을 보여주고 있으니, 괜히 불필요한 서브 클래싱 없이 잘 활용할 수 있도록 연습해 두도록 하자.

 

그렇다고 한다ㅎㅎ

 

https://soooprmx.com/archives/9504

 

스레드를 이용한 데몬 만들기 - Python · Wireframe

이 블로그를 통해서 파이썬에서의 병렬처리에 대해서는 명시적으로 threading.Thread 대신에 concurrent.futures 에서 제공하는 API를 사용할 것을 여러 차례 권장해 왔다. 여기서 주목할 것은 바로 “병렬처리”라는 조건이다. 즉 concurrent.futures의 API는 일련의 데이터에 대해서 동일한 처리를 하려할 때, 이 “동일한 처리”를 여러 스레드 혹은 프로세스로 나눠서 동시에 진행하는 상황에 어울리는 기능이다. 하지만 실제

soooprmx.com

https://soooprmx.com/archives/4961

 

GIL · Wireframe

GIL CPython은 Global Interpreter Lock, 즉 GIL이라는 것을 사용한다. GIL은 일종의 뮤텍스로 복수의 네이티브 파이썬 스레드가 동시에 바이트코드를 실행하지 못하도록 하는 것이다. CPython의 메모리 관리 방식은 스레드-안전하지 못하기 때문에 이러한 방식의 락이 필요하다. 반대로 GIL을 도입하면서부터 다른 기능들은 GIL이 강제하는 부수효과에 의존하기 시작하기도 한다. GIL은 양면성을 가지는데, 멀티스레드로 디자인된 C

soooprmx.com

 

728x90