>  기사  >  백엔드 개발  >  Python의 이벤트 객체 사용 예에 ​​대한 자세한 설명

Python의 이벤트 객체 사용 예에 ​​대한 자세한 설명

Y2J
Y2J원래의
2017-05-03 16:32:082273검색

이 글은 주로 Python 프로그래밍에서 이벤트 객체의 사용법을 소개하고, 스레드 통신에서 이벤트 객체의 역할과 사용법을 예제 형식으로 분석합니다. 필요한 친구들이 참고할 수 있습니다.

에 있는 예제 이 문서에서는 Python 프로그래밍에서 이벤트 개체의 사용법을 설명합니다. 자세한 내용은 다음과 같습니다.

Python은 스레드 간 통신을 위한 이벤트 개체를 제공합니다. 이는 스레드에 의해 설정된 신호 플래그입니다. 스레드는 다른 스레드가 신호를 보낼 때까지 기다립니다. 스레드가 true로 설정됩니다. 이는 Windows 이벤트와 정반대인 것 같습니다. Event 개체는 스레드 간의 통신을 실현하기 위한 간단한 스레드 통신 메커니즘을 구현합니다.

1. 신호 설정

Event 개체 내부의 신호 플래그를 true로 설정하려면 Event의 set() 메서드를 사용하세요. Event 개체는 내부 신호 플래그의 상태를 확인하기 위해 isSet() 메서드를 제공합니다. 이벤트 개체의 set() 메서드를 사용하면 isSet() 메서드가 true를 반환합니다.

2 . 신호 지우기

Event 객체 내부의 신호 플래그를 지우려면 Event 객체의clear() 메소드를 사용하십시오. 즉, Event의 Clear 메소드를 사용하는 경우에는 false로 설정하십시오. , isSet() 메서드는 false를 반환합니다

3. Waiting

Event 개체의 wait 메서드는 내부 신호가 true인 경우에만 빠르게 실행되고 반환을 완료합니다. . Event 객체의 내부 신호 플래그가 false인 경우 wait 메서드는 반환하기 전에 true가 될 때까지 기다립니다.

이벤트를 사용하여 작업자 스레드를 정상적으로 종료할 수 있습니다. 샘플 코드는 다음과 같습니다.

# make thread exit nicely
class MyThread9(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
  def run(self):
    global event
    while True:
      if event.isSet():
        logging.warning(self.getName() + " is Running")
        time.sleep(2)
      else:
        logging.warning(self.getName() + " stopped")
        break;
event = threading.Event()
event.set()
def Test9():
  t1=[]
  for i in range(6):
    t1.append(MyThread9())
  for i in t1:
    i.start()
  time.sleep(10)
  q =raw_input("Please input exit:")
  if q=="q":
    event.clear()
if __name__=='__main__':
  Test9()

위 내용은 Python의 이벤트 객체 사용 예에 ​​대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.