import os
from multiprocessing import Process
def printer(name: str):
print("NAME : ", name)
print("PID : ", os.getpid())
print("PPID : ", os.getppid())
if __name__ == '__main__':
print("Python : ", os.getpid())
process1 = Process(target=printer, args=("로컬",))
process2 = Process(target=printer, args=("가지",))
process1.start()
process2.start()
multiprocessing
모듈을 사용해 파이썬으로 멀티 프로세싱을 사용해볼 수 있다.
먼저 실행할 함수와 파라미터를 지정해주고 Process 객체의 인스턴스를 생성한다.
start()
메서드를 사용하면 해당 프로세스를 실행할 수 있다.
프로세스가 동시에 실행돼서 섞여서 출력되기도 한다.
프로세스 인스턴스를 생성한 곳의 pid가 프로세스들의 ppid가 되었다.
import os
import threading
def printer(name: str):
print("NAME : ", name)
print("PID : ", os.getpid())
print("thread ID : ", threading.get_native_id())
if __name__ == '__main__':
print("Python : ", os.getpid())
thread1 = threading.Thread(target=printer, args=("로컬",))
thread2 = threading.Thread(target=printer, args=("가지",))
thread1.start()
thread2.start()
프로세스와 사용방법이 매우 유사하다. threading.get_native_id()
를 이용해 스레드 ID 를 확인할 수 있다.
프로세스ID는 동일하고 스레드 ID는 달라진 걸 볼수 있다. 근데 얘는 아무리 실행시켜도 순서가 섞여서 나오지는 않는듯..?