2014-04-03 1 views
6

내 LAN에 5 ~ 10 밀리 초마다 UDP 데이터 패킷을 보내는 장비가 있습니다. 내 응용 프로그램에서 시작될 때 큰 버퍼 소켓을 할당하고 축적 된 패킷을 읽고, 구문 분석하고, 스풀러에 쓰고, 잠시 후 잠을 자도록 무한 루프를 입력하는 판독기 스레드가 있습니다 (time.sleep(0.500)) .잠자는 파이썬 스레드를 깨우는 가장 좋은 방법은 무엇입니까?

저는 데이터에 대해 게으른 소비자가 여러 명 있는데, 대부분 수동 통계를 보관하거나 생성합니다. 그러나 한 소비자 (디스플레이 용)는 최신 데이터를 필요로하므로 스풀러를 쿼리하기 전에 잠자는 독자를 깨워서 소켓을 읽어야합니다.

수면 스레드를 깨우는 가장 좋은 방법은 무엇입니까? 나는 threading.condition.wait()를 선택 timeout 인수를 가지고 있음을 발견하는 데 실패했다

+0

왜 잠자기를해야하나요? –

+0

이렇게하는 것이 더 효율적이기 때문입니다. – BobC

답변

8

(교대, 그 깨우기? 쉽게 잠을 스레드에 대한 더 나은 방법이 아니면)

!

대답은 create a condition object이고 대신 시간 제한이있는 wait() 메서드를 사용합니다. 시간 초과 이전에 스레드를 깨우지 않으면 조건 오브젝트의 notify() 메소드를 호출하십시오.

관련 문제