멀티프로세싱과 멀티스레딩

이강용·2024년 7월 24일
0

CS

목록 보기
91/109

멀티프로세싱(MultiProcessing)

  • 여러 프로세스를 사용하여 동시에 여러 작업을 수행하는 방법
  • 각 프로세스는 독립된 메모리 공간을 가지며 서로 다른 CPU 코어에서 병렬로 실행될 수 있음
  • 멀티 프로세싱은 CPU 집약적인 작업을 병렬로 처리하는 데 효과적

특징

  • 독립된 메모리 공간 : 각 프로세스는 독립된 메모리 공간을 사용하므로 하나의 프로세스가 크래시되더라도 다른 프로세스에 영향을 미치지 않음
  • 병렬 실행 : 멀티프로세싱은 여러 CPU 코어를 활용하여 병렬로 작업을 실행
    • 이는 다중 코어 시스템에서 성능을 극대화할 수 있음
  • 안정성 : 메모리 공유가 없기 때문에 스레드 간의 데이터 충돌 문제(경쟁 상태)를 피할 수 있음

멀티스레딩(MultiThreading)

  • 하나의 프로세스 내에서 여러 스레드를 생성하여 동시에 여러 작업을 수행하는 방법
  • 모든 스레드는 같은 메모리 공간을 공유
  • 멀티스레딩은 I/O 작업이나 가벼운 병렬 작업을 효율적으로 처리하는 데 유리

특징

  • 공유 메모리 공간: 모든 스레드는 동일한 메모리 공간을 공유하므로, 데이터 공유와 통신이 더 빠르고 효율적
  • 경량화: 스레드는 프로세스보다 생성 및 종료 비용이 적음
  • 동시성: 멀티스레딩은 실제 병렬 실행보다는 동시성을 제공하여, I/O 작업 대기 시간 동안 다른 작업을 수행할 수 있게 함

실습

import os
from multiprocessing import Process 
import requests
def f(name):
    x = requests.get('https://w3schools.com/python/demopage.htm')
    print('pid of parent:', os.getppid())
    print('pid of %s : %d' %(name, os.getpid()))
    print(x.text)
if __name__ == '__main__':
    print('pid of main:', os.getpid())
    p1 = Process(target=f, args=("프로세스 1",)) 
    p2 = Process(target=f, args=("프로세스 2",)) 
    p1.start(); p1.join()
    p2.start(); p2.join()
profile
HW + SW = 1

0개의 댓글