이미지 출처 : https://velog.io/@raejoonee/프로세스와-스레드의-차이
프로그램 >> 프로세스 >> 스레드
프로그램
프로세스
스레드


프로세스는 각각 독립된 메모리 영역을 할당받으므로, 다른 프로세스에 접근이 어렵습니다.
이와 다르게 스레드는 메모리를 서로 공유할 수 있다는 차이가 있습니다.
프로세스간 자원공유를 위해 별도의 IPC를 구현해야 합니다.
스레드는 프로세스가 할당받은 메모리 영역 내에서 Stack 메모리 영역은 따로 할당받고, 나머지 Code/Data/Heap 메모리 영역을 공유하기에 메모리 절약을 할 수 있습니다.
IPC - 프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 뜻합니다.
멀티 프로세싱
멀티 프로그래밍
멀티 태스킹
멀티 스레드
멀티 프로세스
IPC를 통해야 하며 메모리 사용량이 많습니다.
Global Intepreter Lock의 약자로 하나의 스레드에 모든 자원을 허락하고 나머지 스레드에 락을 걸어 다른 스레드가 실행되지 않도록 막아버리는 기능입니다.
현시점 한 스레드만 실행할 수 있는 것입니다.
파이썬에서 멀티 스레드를 사용했을 때 오히려 성능이 저하될 수 있습니다.
ㄴ lock 획득,해제로 인한 오버헤드로 실행 시간이 더 길어질 수 있기 때문입니다.
오버헤드 - 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간, 메모리 등을 말합니다.
파이썬에서 멀티스레드는 의미가 없나?
GIL은 cpu동작에서 적용되는것을 말하며, cpu동작을 마치고 I/O (데이터 입/출력 )작업을 실행하는 동안에는 다른 스레드가 동시에 동작할 수 있습니다.
즉, I/O작업이 많은 병렬 처리 프로그램에서 유용하게 사용할 수 있습니다.