문제가
아래 스크립트는 최대 하나의 이벤트를 인쇄 한 다음 중지합니다 (문제를 설명하기 위해 작성된 것입니다).변경 사항을 폴링하는 방법은 무엇입니까?
#!/usr/bin/env python
from select import poll, POLLIN
filename = "test.tmp"
# make sure file exists
open(filename, "a").close()
file = open(filename, "r+")
p = poll()
p.register(file.fileno(), POLLIN)
while True:
events = p.poll(100)
for e in events:
print e
# Read data, so that the event goes away?
file.read()
그러나 초당 약 70000 개의 이벤트를 인쇄합니다. 왜?
내가 내부적으로 pyudev.Monitor 클래스를 사용하는 클래스를 작성했습니다
배경입니다. 그 중에서도 poll object을 사용하여 fileno() 메서드가 제공하는 fileno를 변경하여 폴링합니다.
이제 수업을위한 단위 테스트를 작성하려고합니다. (단위 테스트를 먼저 작성해야하기 때문에이를 지적 할 필요가 없습니다. 따라서 필자는 자신의 필로를 작성해야합니다.) 메서드를 내 모의 pyudev.Monitor 개체에 대한 및이를 폴링 개체를 이벤트를보고 트리거 할 수 있도록이를 제어해야합니다. 위의 코드에서 보여 주듯이, 나는 겉으로보기에는 존재하지 않는 이벤트를보고하는 것을 멈출 수 없습니다!
투표 클래스에서 acknowledge_event() 또는 비슷한 것을 찾을 수 없으므로 이벤트가 사라집니다 (단 하나의 이벤트가 멈춘 것 같습니다). Google 검색과이 사이트는 아무 것도 산출하지 않았습니다. 우분투 10.10에서 파이썬 2.6.6을 사용하고 있습니다.