컴퓨터 공학 & 통신
[개념 정리/운영체제] 멀티 프로세싱 & 멀티 스레딩
왈왈디
2023. 7. 26. 16:56
728x90
멀티 프로세싱
여러 개의 프로세스.
멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말한다.
서로 다른 프로세스를 동시에 진행할 수도 있고,
같은 프로세스를 병렬적으로 수행할 수도 있다.
멀티 스레딩
프로세스 내 작업을 멀티 스레드로 처리하는 기법이다.
스레드끼리 서로 자원을 공유하고
프로세스보다는 가볍기 때문에 효율성이 높다는 장점이 있다.
하지만 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐
스레드로 이루어진 프로세스에 영향을 줄 수 있다는 단점이 있다.
대표적인 예시로, 브라우저는
멀티 프로세스이자 멀티 스레드 아키텍처를 가진 소프트웨어이다.
browser process, renderer process, GPU process, plugin process 등
멀티 프로세스 구조를 가지면서,
renderer process 내에 main thread, worker threads, compositor thread, raster thread 등을 갖는
멀티 스레드 구조를 함께 가진다.
아래는 간단하게 멀티 프로세스/ 멀티 스레드 web scraping을 구현해볼 수 있는 파이썬 코드다.
improt 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()
* 여러개의 스레드 또는 프로세스를 만든 상태를 멀티 스레드, 멀티 프로세스라고 하며,
이를 기반으로 작업하는 것을 멀티 스레딩, 멀티 프로세싱이라고 한다.
참고: inflearn 강의 'CS 지식의 정석 - 큰돌
728x90