오래 못 할 짓 하지 않기
[ 운영체제 ] 6. 프로세스 / 스레드 확인 (with Python) 본문
728x90
파이썬에서 프로세스 확인하기
Import os
한 뒤에
import os
print("hello world")
print("my pid is", os.getpid())
이렇게 만들어 보았다.
os 라이브러리에 있는 getpid() 메소드를 이용하면
내가 사용하고 있는 프로세스의 id를 알 수 있다.
매번 실행 때마다 os가 pid를 주는 것이 다르므로 pid값도 다르게 나온다
정확히는 실행이 끝나면 pid를 수거해가기 때문에
다음 실행에 새로운 pid를 받는다고 생각하면 된다.
다음 예시는
[ parent 프로세스 > parent가 만든 child 프로세스 > 그 child 프로세스에서 찾는 parent프로세스 ]
이렇게 찾는 걸 해볼거다 코드는 다음과 같다.
from multiprocessing import Process
import os
def foo():
print('foo:child process :' , os.getpid())
print('foo:parent process :' , os.getppid())
if __name__ =='__main__':
print('parent process id:', os.getpid())
child = Process(target=foo).start()
if 부분은 무시해도 됨 그냥 아래를 메인함수처럼 실행한다 라는 뜻으로 이해해도 여기에선 무관함
출력 결과는 다음과 같다
그럼 자식 프로세스를 더 늘리면 어떻게 나올까?
이런 양상이라고 이해하면 편할 듯하다
파이썬에서 스레드 확인하기
import threading
import threading
import os
print()
def foo():
print('foo:thread id :' , threading.get_native_id())
print('foo:my pid is:',os.getpid())
if __name__ =='__main__':
print('my pid is:',os.getpid())
thread1 = threading.Thread(target=foo).start()
이 코드를 실행한다.
하나의 프로세스가 실행되고, 그 안에 있는 스레드가 foo 함수를 실행한다.
그럼 foo 함수에서 Process id와 Tread id를 출력한다.
이걸 또 thread 2,3을 만들어서 실행해본다면
이렇게 될 수도 있음
스레드1 -> 함수 2줄 ,2->함수 2줄 ... 항상 순차적으로 진행되는 게 아님
(참고)
한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 8. CPU 스케줄링 알고리즘 (0) | 2024.01.10 |
---|---|
[ 운영체제 ] 7. CPU 스케줄링 (0) | 2024.01.09 |
[ 운영체제 ] 5. Thread (0) | 2024.01.05 |
[ 운영체제 ] 4. 프로세스 상태 및 계층구조 (0) | 2024.01.04 |
[ 운영체제 ] 3. 프로세스 개요 (프로세스 메모리 영역) (0) | 2024.01.03 |