Используя select/poll/kqueue/kevent для наблюдения каталога за новыми файлами

Первая книга, которая оказала реальное влияние на меня, была Turbo Accembler Освоения Tom Swan.

Другие книги, которые оказали влияние, были Только Для Забавы Linus Torvalds и David Diamond и конечно Прагматически настроенный Программист Andrew Hunt и David Thomas.

5
задан gdm 22 July 2009 в 14:13
поделиться

4 ответа

После запуска профилирования я вижу, что много времени проводится в спящем режиме, и мне интересно, следует ли мне изменить это, чтобы вместо этого использовать опрос.

Похоже, вы уже выполняете синхронный опрос, проверяя состояние через регулярные промежутки времени. Не беспокойтесь о времени, "проведенном" в сне , это не потребляет процессорного времени. Он просто передает управление операционной системе, которая пробуждает процесс после запрошенного тайм-аута.

Вы можете рассмотреть асинхронный цикл обработки событий, используя библиотеку, которая прослушивает уведомления об изменении файловой системы, предоставляемые операционной системой, но сначала подумайте, дает ли она вам какие-либо реальные выгоды в данной конкретной ситуации.

1
ответ дан 13 December 2019 в 22:13
поделиться

Почему бы не использовать оболочку Python для одной из библиотек для мониторинга изменений файлов, например gamin или inotify (поиск по pyinotify, мне разрешено размещать только одну гиперссылку как новый пользователь ...) - это наверняка будет быстрее, а низкоуровневые вещи уже сделаны для вас на уровне C с использованием интерфейсов ядра ...

3
ответ дан 13 December 2019 в 22:13
поделиться

FreeBSD и, следовательно, Mac OS X предоставляют аналог inotify, называемый kqueue. Для получения дополнительной информации введите man 2 kqueue на машине FreeBSD. Для kqueue на Freebsd у вас есть PyKQueue, доступный по адресу http://people.freebsd.org/~dwhite/PyKQueue/ , к сожалению, активно не поддерживается, поэтому ваш опыт может варьироваться.

6
ответ дан 13 December 2019 в 22:13
поделиться

Возможно, вы захотите взглянуть на select .kqueue - я не использовал его, но kqueue - правильный интерфейс для этого в BSD, я считаю, что вы можете отслеживать файлы / каталоги и получать обратный вызов тогда и только тогда, когда они меняются

0
ответ дан 13 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: