from multiprocessing import Process, Event
import time
def wait_for_event(e):
print("wait_for_event: starting")
e.wait() # 이벤트가 설정될 때까지 대기
print("wait_for_event: e.is_set()->", e.is_set())
def wait_for_event_timeout(e, t):
print("wait_for_event_timeout: starting")
e.wait(t) # t초 동안 이벤트가 설정될 때까지 대기
print("wait_for_event_timeout: e.is_set()->", e.is_set())
if __name__ == "__main__":
e = Event()
w1 = Process(target=wait_for_event, args=(e,))
w2 = Process(target=wait_for_event_timeout, args=(e, 2))
w1.start()
w2.start()
time.sleep(3) # 3초 대기
e.set() # 이벤트 설정, w1은 계속 진행될 것이고, w2는 이미 타임아웃으로 종료됨
w1.join()
w2.join()
wait_for_event
함수를 실행하는 프로세스가 계속 진행되도록 하고, 타임아웃이 설정된 함수를 실행하는 프로세스는 타임아웃 후에 진행됩니다.__init__(self)
Event
인스턴스를 생성합니다.set(self)
clear(self)
is_set(self)
bool
. 이벤트가 설정되어 있으면 True, 그렇지 않으면 False.wait(self, timeout=None)
timeout
(float 또는 None): 선택적 타임아웃 값(초 단위). None
인 경우 무한 대기합니다.bool
. 이벤트가 설정되면 True를 반환하고, 타임아웃이 발생하면 False를 반환합니다.multiprocessing.Event
객체에는 사용자가 직접 접근할 수 있는 공개 어트리뷰트가 없습니다. 객체의 상태(이벤트가 설정되었는지 여부)는 is_set()
메서드를 통해 확인할 수 있으며, 이벤트의 상태 변경은 set()
과 clear()
메서드를 통해서만 수행할 수 있습니다.