본문 바로가기

프로그램_기본이론

프로세스 생성(실습)

멀티프로세싱(multiprocessing) 을 주제로 진행해보겠다.

 

5번째 예제를 생성

python 기본 패키지인 multiprocessing을 호출해서 사용하겠다.

이름 그대로 multiprocessing 프로그램을 하고싶을 때 사용하는 패키지이다.

여기에는 Process 라는 클래스가 존재해서 사용할 수가 있다.

 

Process 자식 프로세스를 생성할 때 사용하는 객체클래스이다 .

from multiprocessing import Process

 

그리고 운영체제의 기능을 지원받으니까 os 모듈도 임포트 한다.

import os

 

 

 

그리고 초간단 예제를 우선 만들어보자.

 

func()함수는 하나의 기능을 정의하는 함수이다.

def func():
print('이것은 실험용으로 대충 만든 함수입니다.')

 

 

 

 

이 기능을 우리는 multiprocessing 이 제공하는 프로세스 객체에다 맡길 건데,

그럼 개별 프로세스가 만들어져서 그 만들어진 프로세스 아이디를 확인할 수 있게 된다.

print('프로세스 아이디 : ', os.getpid())

 

여기서 추가로 getppid 를 추가로 출력을 해 볼 것 이다.

 

ppid 는 Parent Process ID 의 약자로 즉, 부모 프로세스 ID 를 의미한다.

 

getppid()는 현재 프로세스의 부모 프로세스의 프로세스 ID(PID)를 반환하는 메서드이다.

print('나의 부모 프로세스 아이디 : ', os.getppid())

 

func() 라는 간단한 함수를 하위 프로세스를 하나 만들어서 맡길 것이고 개한테 일을 시킨다고 했는데, 

 

그러면 지금 나의 05.py 프로그램은 뭐가 되나?

 

하위 프로세스 부모 프로세스가 되는 것이다.

os.ppid 는 파이썬 프로그램에 아이디고,  

os.getpidProcess로 만들어진 하위 프로세스의 아이디가 될 것이다.

 

 

__name__ == __main__ 이라 해서 메인 프로세스 동작을 이 아래의 조건문으로 정의를 한 거고, 

05.py 프로세스가 메인 프로세서다 보니, 여기서는 get.pid 를 하게 되면 05.py 에 아이디가 나오게 된다.

 

그리고 Process 클래스를 통해 객체를 하나 만들었는데 이것은 하위 프로세스를 만든 것 

이 하위 프로세스는 def func() 을 진행하게 된다.

 

* target : 프로세스에게 시킬 작업을 정의하는 매개변수이다.

if __name__ == '__main__':
print('05.py 프로세스 아이디 :' , os.getpid())
child = Process(target=func). start()

 

 

출력 

 

메인 프로세스 < python 프로그램> 은 3984 이다.

func < 메인 프로세스의 자식 > 은 3986

func 의 < 부모 프로세스>  은 3984

 

이렇게 하위 프로세스를 만들어서 관리할 수 있다.

 


파이썬 스크립트인 05.py를 실행한 결과를 간단히 설명

05.py 프로세스 아이디 : 3984

이 부분은 05.py 스크립트를 실행한 파이썬 프로세스의 프로세스 ID(PID)이다.

이것은 부모 프로세스의 PID이다.

이것은 실험용으로 대충 만든 함수입니다. : 이 부분은 func 함수가 실행되었음을 나타냄


프로세스 아이디 : 3986: 이 부분은 func 함수가 실행된 새로운 하위 프로세스의 프로세스 ID(PID) 

이것은 자식 프로세스의 PID이다.

 

나의 부모 프로세스 아이디 : 3984: 이 부분은 func 함수를 실행하는 새로운 하위 프로세스의 부모 프로세스의 PID이다.

즉, 05.py 스크립트를 실행한 파이썬 프로세스의 PID

요약하면, 05.py 스크립트를 실행한 파이썬 프로세스가 부모 프로세스이고, 

func 함수가 실행된 새로운 하위 프로세스는 자식 프로세스다.

자식 프로세스는 새로운 작업을 처리하고, 부모 프로세스는 원래의 작업을 계속하게된다.

 

 

이와 같은 작업은 하나만 할 수 있는 게 아니고, 여러개 할 수가 있는데 실습 (2) 에서 진행해보겠다.

 

https://jennifer-development-blog.tistory.com/23

 

프로세스 생성(실습)(2)

 

jennifer-development-blog.tistory.com

 

'프로그램_기본이론' 카테고리의 다른 글

프로세스 생성(실습)(2)  (0) 2024.04.08
프로세스 생성  (0) 2024.04.05
프로세스_컨텍스트 스위칭  (1) 2024.04.05
프로세스 상태(실습)  (0) 2024.04.05
프로세스 상태  (0) 2024.04.05