Проблема
Я ожидал, что приведенный ниже скрипт напечатает не более одного события, а затем остановится (он написан только для иллюстрации проблемы).
#!/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 .Помимо всего прочего, он опрашивает fileno, предоставленный методом fileno (), на предмет изменений, используя объект опроса .
Теперь я пытаюсь написать модульный тест для своего класса (я понимаю,Я должен сначала написать модульный тест, поэтому нет необходимости указывать его), и поэтому мне нужно написать собственный метод fileno () для моего фиктивного объекта pyudev.Monitor, и мне нужно управлять им, чтобы я могвызвать объект опроса, чтобы сообщить о событии.Как показывает приведенный выше код, я не могу заставить его прекратить сообщать о, казалось бы, несуществующих событиях!
Я не могу найти в классе опроса нетcknowledge_event () или чего-либо подобного, чтобы убрать событие (я подозреваю, чтоодно событие, которое как-то застряло), поиск в Google, и этот сайт ничего не дал.Я использую Python 2.6.6 на Ubuntu 10.10.