관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

프로세스와 스레드 3 - 파이썬 코드로 프로세스 확인 실습해보기 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

프로세스와 스레드 3 - 파이썬 코드로 프로세스 확인 실습해보기

huenuri 2024. 10. 17. 21:56

이번에는 파이썬 코드로 프로세스를 확인하는 실습을 진행해보려고 한다. 


 

 

프로세스 만들기

 

test.py라는 파이썬 파일이 있고 다음과 같은 코드를 실행시킬 것이다.

 

 

 

hello, os!라는 문자열을 출력하는 파일을 하나 작성했다.

 

 

 

이 코드를 실행시키면 이와 같은 문자열이 출력된다.

 

 

 

os를 임포트하고, getpid()를 통해 현재 프로세스의 PID 값을 확인해볼 수 있다.

 

 

 

PID 값이 출력되었다. PID 값은 운영체제가 그때그때 부여해주는 값이라 똑같은 코드를 쳐도 다를 수 있다.

 

 

 

이렇게 PID 값이 각기 달라지는 것을 확인했다. 프로세스가 끝나면 PID 값을 수거해간다.


 

 

 

동일한 작업을 실행하는 프로세스 만들기

 

이번에는 자식 프로세스를 생성해보려고 한다. 동시에 실행하는 프로세스를 foo()라고 설정했고, print로 프로세스 값을 찍어주었고, 부모 프로세스의 PID도 출력한다.

자식 프로세스는 foo를 실행해주는 프로세스이다. 이 코드를 실행하면 부모와 자식 프로세스값이 출력되고, 자식 프로세스에서 생성한 부모 프로세스의 PID 값도 모두 출력이 된다.

 

 

 

 

이렇게 부모와 자식 프로세스의 PID 값이 잘 출력되었음을 확인할 수 있다. 자식 프로세스와 부모 프로세스의 PID 값은 다르지만, 자식 프로세스에서 생성한 부모 프로세스의 PID값은 같다.

 

 

 

이번에는 동일한 작업을 수행하는 여러 개의 자식 프로세스를 만들어보겠다.

 

foo라고 하는 함수를 생성하는 여러 개의 자식 프로세스를 만들었다.

 

 

 

각기 다른 프로세스의 PID 값이 찍힐 것이다. child1, child2, child3은 동일한 부모에서 생성되었으므로 이들의 프로세스 값을 같을 것으로 예상할 수 있다. 하지만 자식 프로세스 내에서 생성한 자식의 프로세스 값은 다를 것이다.

 

 

 

확인해보면 부모 프로세스의 PID 값은 83220으로 동일하지만, 자식 프로세스의 PID 값은 모두 다르다.

 

 

 

 

foo라는 작업을 동시에 실행할 때는 이렇게 코드를 작성해볼 수 있다.

 


 

 

 

각기 다른 작업을 하는 프로세스 만들기

각각의 프로세스가 동시에 실행되면서 다른 작업을 하도록 만들어줄 수도 있다. 예를 들어 워드 프로세스 프로그램이라고 가정해보자. foo는 사용자로부터 입력받는 기능, bar는 출력하는 기능, baz는 맞춤법을 검사하는 기능을 구현했다고 생각해보자.

 

 

 

동시에 실행해야 하는 각기 다른 작업도 만들어낼 수 있다.

 


 

 

 

학습을 마치고

처음에 이 코드를 만났을 때는 어떻게 프로세스 작업을 하는지 모르겠고 정말 어려워보였다. 근데 강의를 듣고 내용을 정리하면서 나도 혼자서 직접 실습을 해볼 수 있겠다는 생각이 들었다. 강사님은 아마도 리눅스 운영체제에서 실습을 진행하시는 것 같았다. 윈도우라면 cmd 창을 통해 작업해보면 되고, 파이썬 프로그램으로 이 코드를 작성해볼 수 있겠다.

 

이번에는 시간이 없기도 하고 이런 게 있구나 하고 넘어가고 다음에 두번째 복습을 할 때 실습해보려고 한다.