Python Category/기타

[Python] 파이썬으로 멀티 프로세스 만들기

ReBugs 2023. 6. 28.

2023.06.27 - [컴퓨터 구조 & 운영체제] - [운영체제] 스레드(Thread), 멀티 프로세스와 멀티 스레드

 

[운영체제] 스레드(Thread), 멀티 프로세스와 멀티 스레드

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 스레드 이 글에서 다루는 내용은 소프트웨어적 스레드이

rebugs.tistory.com

위 글을 바탕으로 파이썬으로 멀티 프로세스를 구현


프로세스 PID 얻기

import os
print('hello os')
print('my pid is', os.getpid()) #프로세스의 PID를 얻어옴

위 코드는 프로세스의 PID를 얻어오는 코드이다.

PID는 22468이라고 알려준다.


자식 프로세스 생성하고 PID값 얻어오기

from multiprocessing import Process
import os
def foo():
    print('child process', os.getpid()) #자식 PID 출력
    print('my parent is', os.getppid()) #부모 PID 출력
   
if __name__ == '__main__':
    print('parent process', os.getpid()) #부모 PID 출력
    child = Process(target=foo).start()

위 코드는 부모 프로세스가 자식 프로세스를 생성하고, 자식 프로세스는 foo() 함수를 호출하여 자신의 PID와 부모의 PID(PPID)를 출력한다.

부모가 자식을 생성했으므로, 부모의 getpid() 리턴값과, 자식의 getppid() 리턴값은 같다.

부모 프로세스의 PID는 10940이고, 자식 프로세스의 PID는 16492라고 출력된다.


자식 프로세스 여러 개 생성하기

자식 프로세스는 여러 개 만들 수 있다.

from multiprocessing import Process
import os
def foo():
    print('child process', os.getpid()) #자식 PID 출력
   
if __name__ == '__main__':
    child1 = Process(target=foo).start() #자식1 생성
    child2 = Process(target=foo).start() #자식2 생성
    child3 = Process(target=foo).start() #자식3 생성


각기 다른 작업하는 자식 프로세스 생성하기

자식 프로세스는 각기 다른 작업을 수행할 수도 있다.

from multiprocessing import Process
import os
def foo():
    print('This is foo')
    print('process id', os.getpid()) #PID 출력
    
def bar():
    print('This is bar')
    print('process id', os.getpid()) #PID 출력

def baz():
    print('This is baz')
    print('process id', os.getpid()) #PID 출력
   
if __name__ == '__main__':
    child1 = Process(target=foo).start()
    child2 = Process(target=bar).start()
    child3 = Process(target=baz).start()

자식 1은 foo(), 자식 2는 bar(),  자식 3은 baz()함수를 호출한다.

각 함수는 PID를 출력한다.

'Python Category > 기타' 카테고리의 다른 글

[Python] 파이썬으로 멀티 스레드 만들기  (0) 2023.06.29

댓글