파이썬 멀티 스레딩 vs 멀티 프로세싱

Jaeuk Ko·2022년 12월 11일
0
  1. 멀티 스레딩의 장점이자 단점 : 메모리를 공유한다
  • 멀티 프로세싱이라면 : 하나의 파이썬 파일을 자식 프로세스로 복제하여 진행

  • 멀티 스레딩은 하나의 프로세스에서 스레드를 여러개 만들어서 진행 : 이 스레드들끼리 메모리를 공유한다.

  • 개중 하나의 스레드에서 계산을 하다가 에러가 나면 다른 스레드들도 에러가 생길수 있다.

  • 따라서 이 멀티 스레딩으로 병렬 계산을 하는것은 위험 할 수 있음

  • 그래서 GIL(global interpreter lock) 도입

  1. GIL
  • 한번에 1개의 스레드만 유지하는 락 : 병렬성 x

  • 이 때문에 파이썬에서는 스레드로 병렬성 연산을 수행하지 못함

  • 대신 동시성(concurrency)를 사용해서 io바운드 코드에서 활용 가능

  • 하지만 연산 레벨의 cpu bound에서는 활용이 어려움

  • 이를 보완하는게 멀티 프로세싱

  1. 멀티 프로세싱 :
  • 프로세스들을 공유하고 각 프로세스들 끼리 메모리 공유x, 프로세스들 끼리 통신을 해야함.

  • 멀티 프로세싱을 사용하면 통신 - 직렬화/역직렬화에 대한 비용이 크다.

  • 이러한 비용을 감수하더라도 성능/속도의 이점을 누리고 싶을 때, 멀티 프로세싱 사용.

  • cpu 집약적인 연산을 할 때에는 : 멀티 프로세싱>동기적 연산 > 멀티 스레딩

profile
망원동 개발자

0개의 댓글