Первая книга, которая оказала реальное влияние на меня, была Turbo Accembler Освоения Tom Swan.
Другие книги, которые оказали влияние, были Только Для Забавы Linus Torvalds и David Diamond и конечно Прагматически настроенный Программист Andrew Hunt и David Thomas.
После запуска профилирования я вижу, что много времени проводится в спящем режиме, и мне интересно, следует ли мне изменить это, чтобы вместо этого использовать опрос.
Похоже, вы уже выполняете синхронный опрос, проверяя состояние через регулярные промежутки времени. Не беспокойтесь о времени, "проведенном" в сне
, это не потребляет процессорного времени. Он просто передает управление операционной системе, которая пробуждает процесс после запрошенного тайм-аута.
Вы можете рассмотреть асинхронный цикл обработки событий, используя библиотеку, которая прослушивает уведомления об изменении файловой системы, предоставляемые операционной системой, но сначала подумайте, дает ли она вам какие-либо реальные выгоды в данной конкретной ситуации.
Почему бы не использовать оболочку Python для одной из библиотек для мониторинга изменений файлов, например gamin или inotify (поиск по pyinotify, мне разрешено размещать только одну гиперссылку как новый пользователь ...) - это наверняка будет быстрее, а низкоуровневые вещи уже сделаны для вас на уровне C с использованием интерфейсов ядра ...
FreeBSD и, следовательно, Mac OS X предоставляют аналог inotify, называемый kqueue. Для получения дополнительной информации введите man 2 kqueue на машине FreeBSD. Для kqueue на Freebsd у вас есть PyKQueue, доступный по адресу http://people.freebsd.org/~dwhite/PyKQueue/ , к сожалению, активно не поддерживается, поэтому ваш опыт может варьироваться.
Возможно, вы захотите взглянуть на select .kqueue - я не использовал его, но kqueue - правильный интерфейс для этого в BSD, я считаю, что вы можете отслеживать файлы / каталоги и получать обратный вызов тогда и только тогда, когда они меняются