본문 바로가기

multiprocessing

(3)
[Python] Blocking vs Non-Blocking, Sync vs Async Blocking vs Non-blocking Blocking - 시스템 콜 요청시 -> 커널 IO 작업 완료 시 까지 응답 대기 - 제어권(IO작업) -> 커널 소유 -> 응답(Response)전 까지 대기(Block) -> 다른 작업 수행 불가(대기) Non-blocking - 시스템 콜 요청시 -> 커널 IO 작업 완료 여부 상관없이 즉시 응답 - 제어권(IO작업) -> 유저 프로세스 전달 -> 다른 작업 수행 가능(지속) -> 주기적 시스템 콜 통해서 IO 작업 완료 여부 확인 Async vs Sync Sync : IO 작업 완료 여부에 대한 Noty는 유저프로세스(호출하는 함수) -> 커널(호출되는 함수) Async : IO 작업 완료 여부에 대한 Noty는 커널(호출되는 함수) -> 유저프로세스..
[Python] Multiprocessing(5) - Queue, Pipe 프로세스 통신 - Queue 방식 from multiprocessing import Process, Queue, current_process import time import os # 실행 함수 def worker(id, baseNum, q): process_id = os.getpid() process_name = current_process().name print(f"Process ID: {process_id}, Process Name: {process_name}") # 누적 sub_total = 0 # 계산 for i in range(baseNum): sub_total += 1 # time.sleep(0.1) # Produce q.put(sub_total) # 정보 출력 print(f"*** Sub ..
[Python] Multiprocessing(4) - Sharing state 멀티 프로세스 자원공유(Value 방식) 샘플 코드 # 프로세스 동기화(공유) # 값을 하나만 공유할때-Value, 리스트타입으로 공유할때-Array from multiprocessing import Process, current_process, Value, Array import random import os # 프로세스 메모리 공유 예제(공유 O) # 프로세스 동기화 관련 참고 # https://docs.python.org/3/library/multiprocessing.html#synchronization-between-processes # 실행 함수 def generate_update_number(v : int): with v.get_lock(): # lock 을 이용한 자료 공유 for i in ..