객체의 멤버로 스레드 이벤트를 사용하여 파이썬

chaylins :

나는 다음과 같은 예를 들어, 클래스가

Class Example(object):
   trigger_event = threading.Event()

    def set_trigger(self):
        # do some stuff
        self.trigger_event.set()

나는 이러한 개체의 그룹을 가지고 하나의 스레드를 처리 할 경우 내가 발견 오전하면 첫 번째 개체는 이벤트 세트가 일단 다음, 다른 모든 객체는 그것뿐만 아니라 설정되어있다. 각 개체에 대한 고유 이벤트 회원을 가지고있는 방법이 있나요?

나는 10 개체가, 내가 set_trigger를 호출하기 전에 이벤트에 대한 ()을 is_set을 인쇄 할 경우 () 다음은 FALSE, TRUE, TRUE, TRUE 등으로 표시됩니다 ...

어떤 도움이나 통찰력에 미리 감사드립니다!

하기 Shubham 샤르마 :

당신은 아마 잘못 해석되는 Event개체를. Event목적은 다중 스레드 간의 통신에 사용되는 하나 개의 스레드는 이벤트 신호와 다른 스레드가 기다린다.

이벤트 객체는 분명히 () 메소드를 false로 설정 () 메소드와 리셋 true로 설정 될 수있는 내부 플래그를 관리합니다. 플래그 때까지 대기 () 메소드 블록은 사실이다.

당신은 아직도를 수행하려는 경우, 당신은 새로운 이벤트 객체에게 당신의 새 인스턴스를 만들 때마다 만들어야합니다 Example. 당신이 그런 짓을해야 할 수도 있습니다 그래서,

class Example(object):
    def __init__(self):
        self.trigger_event = threading.Event()

    def set_trigger(self):
        # do some stuff
        self.trigger_event.set()

e1 = Example()
print(e1.trigger_event.is_set())
e1.set_trigger()
print(e1.trigger_event.is_set())

e2 = Example()
print(e2.trigger_event.is_set())
e2.set_trigger()
e2.trigger_event.wait()
print(e2.trigger_event.is_set())

산출:

False
True
False
True

추천

출처http://43.154.161.224:23101/article/api/json?id=369218&siteId=1