본문 바로가기

Python/기타

(스크랩) ★★★ Python GIL 개념 (feat. 파이썬 병렬 프로그래밍 하기)

파이썬에서는 GIL 때문에 스레드를 늘리는 것은 의미가 없나요?

--> 그렇다. 병렬 프로그래밍을 하려면 멀티 프로세싱을 해야한다.

--> 멀티 프로세싱을 사용하면 코어 개수만큼 병렬처리가 가능하다.

--> 각 프로세스의 단일 스레드가 코어와 1:1로 매칭되어 병렬적으로 실행 되는 것!

--> (하나의 프로세스 내에 스레드가 여러개더라도 GIL 때문에 하나의 스레드만 실행이 가능함)

--> 즉, 코어 개수만큼 병렬 프로그램을 실행하고 싶으면 코어 개수만큼의 프로세스를 생성하고, 단일 스레드로 실행 해야한다.

 

 

 

 

그런데 threading 이라는 모듈을 사용하면 수행시간이 줄어드는 것은 어떻게 이해하면 되나요?

--> I/O bound task 일 경우에는 멀티스레딩이 성능 개선에 도움된다!

--> 병렬 프로그래밍을 하려면 멀티 프로세싱(GIL 때문에 각 단일 스레드)을 해야한다

--> 하지만, I/O bound task 에서는 멀티스레딩이 성능에 도움이 된다.

--> 즉, 멀티 프로세싱을 사용할때 I/O bound task가 많다고 예상되면, 멀티 스레딩을 같이 사용하자. 




 

 



https://medium.com/@tarunjain07/multi-vs-multi-cb9b0ec382ad  번역

 


 



 

https://ssungkang.tistory.com/entry/python-GIL-Global-interpreter-Lock%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

[python] GIL, Global interpreter Lock은 무엇일까?

파이썬에서 멀티스레드를 사용하려고 한다면 GIL이란 단어를 마주치게 됩니다. GIL이 무엇인지 파이썬은 왜 GIL을 가지고 있는지 이번 포스팅을 통해 이해해보도록 합시다. Python으로 멀티스레딩 G

ssungkang.tistory.com


https://wikidocs.net/124143

 

12-01 threading - 스레드 기반의 병렬처리

threading 모듈은 한 프로세스에서 2가지 또는 그 이상의 일을 동시에 수행할 수 있게 하는 모듈이다. ## 문제 다음 함수는 페이지번호를 입력받아 위키독스의 페 ...

wikidocs.net

 

https://docs.python.org/3/library/threading.html

 

threading — Thread-based parallelism — Python 3.10.2 documentation

threading — Thread-based parallelism Source code: Lib/threading.py This module constructs higher-level threading interfaces on top of the lower level _thread module. See also the queue module. Changed in version 3.7: This module used to be optional, it i

docs.python.org

 

https://chacha95.github.io/2020-12-19-python4/

 

고성능 파이썬 프로그래밍 3 - 멀티프로세싱과 멀티스레딩

Python에서는 멀티스레딩보단 멀티프로세싱이 주로 쓰입니다. 그러한 이유를 이해하기 위한 배경지식들을 알아 봅시다. 프로세스와 스레드 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Hea

chacha95.github.io

 

https://dgkim5360.tistory.com/entry/understanding-the-global-interpreter-lock-of-cpython

 

왜 Python에는 GIL이 있는가

Python 사용자라면 한 번 쯤은 들어봤을 (안 들어봤다 해도 괜찮아요) 악명 높은 GIL (Global Interpreter Lock)에 대해 정리해본다. Global Interpreter Lock 그래서 GIL은 무엇인가? Python Wiki에서는 이렇게..

dgkim5360.tistory.com

 

https://thrillfighter.tistory.com/621

 

파이썬 쓰레드와 GIL(Global Interpreter Lock)에 대한 이해

파이썬으로 쓰레드를 공부하다 보면 GIL(Global Interpreter Lock)에 대한 이야기가 심심치 않게 나온다. 공부를 하는 입장에서는 당장 GIL이 뭔지 몰라도 쓰레드를 만들고 프로그램을 돌리는데는 문제

thrillfighter.tistory.com

 

https://ssungkang.tistory.com/entry/python-GIL-Global-interpreter-Lock%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

 

[python] GIL, Global interpreter Lock은 무엇일까?

파이썬에서 멀티스레드를 사용하려고 한다면 GIL이란 단어를 마주치게 됩니다. GIL이 무엇인지 파이썬은 왜 GIL을 가지고 있는지 이번 포스팅을 통해 이해해보도록 합시다. Python으로 멀티스레딩 G

ssungkang.tistory.com

 

https://lazymankook.tistory.com/32

 

Multi Thread Programming

1. 개요 Thread는 CPU 이용의 기본 단위이다. thread는 ID, program counter, set of registers, stack으로 구성된다. thread는 한 process 안에 여러개 존재할 수 있으며, 같은 process에 존재하는 다른 thread들..

lazymankook.tistory.com

 

 

https://medium.com/@tarunjain07/multi-vs-multi-cb9b0ec382ad

 

Multi vs Multi

Multi Core vs. Hyper-threading

medium.com

 

 

https://wikidocs.net/87141

 

06) 멀티프로세싱(Multiprocessing)과 PyQt

[TOC] ## 멀티프로세싱과 PyQt GUI를 구성하는 경우 특정 함수나 메소드에서 오랫동안 작업을 수행하게되면 GUI가 멈추는 현상이 발생합니다. 이런 경우에는 작업 ...

wikidocs.net