패스트캠퍼스 한 번에 끝내는 파이썬 웹 개발 초격차 패키지 pt2 - multiprocessing
multiprocessing 실습
import multiprocessing as mp
# 프로세스에서 실행할 함수
def sub_process(name):
print("[sub] start")
print(name)
cp = mp.current_process()
print(f"[sub] pid: {cp.pid}")
print("[sub] end" )
# 메인 프로세스
if __name__ == "__main__": # 윈도우 운영체제에서만 실행됨
print('[main] start')
p = mp.Process(target=sub_process, args =('startcoding',))
p.start()
p.join()
cp = mp.current_process()
print(f"[main] pid: {cp.pid}")
print("[main] end")
이전에서 배운 것과 마찬가지로 join을 부여하면 메인 프로세스는 서브 프로세스가 모두 종료할 때까지 기다리게된다.
클래스로 멀티프로세싱
서브 프로세스를 클래스의 형태로 정의하여 실행할 수 있다.
from multiprocessing import Process
import time
class Subprocess(Process):
def __init__(self, name):
Process.__init__(self)
self.name = name
def run(self):
print(f"[sub] {self.name} start")
time.sleep(5)
print(f"[sub] {self.name} end")
if __name__ =="__main__":
print("[main] start")
p = Subprocess(name ="startcoding")
p.start()
p.join()
print("[main] end")
※ is_alive() 프로세스가 살아있는지 검사해주주는 메서드로 boolean 값을 출력한다.
※ terminate() 프로세스를 강제 종료한다.
if __name__ =="__main__":
print("[main] start")
p = Subprocess(name ="startcoding")
p.start()
time.sleep(1)
#프로세스가 살아있는지 검사하고 True 값일 경우 강제 종료 해버린다.
if p.is_alive:
p.terminate()
print("[main] end")
서브 프로세스가 실행되기 전에 종료된 모습이다.
Author And Source
이 문제에 관하여(패스트캠퍼스 한 번에 끝내는 파이썬 웹 개발 초격차 패키지 pt2 - multiprocessing), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhs000123/패스트캠퍼스-한-번에-끝내는-파이썬-웹-개발-초격차-패키지-pt2-multiprocessing저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)