2019. 8. 11. 16:42ㆍ분석 Python/구현 및 자료
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
'분석 Python > 구현 및 자료' 카테고리의 다른 글
[ Python ] multiprocessing / concurrent.futures (0) | 2019.08.18 |
---|---|
[ Python ] 사용한 package 모두 저장해서 다른 곳에서 그대로 사용하는방법 (0) | 2019.08.12 |
[ Python ] 동시성과 Future / concurrent.futures 알아보기 (0) | 2019.08.11 |
[ Python ] thread 공부해보기-2 (0) | 2019.08.11 |
[ Python ] thread 공부해보기-1 (2) | 2019.08.11 |