Я использую API «сторожевого пса», чтобы постоянно проверять изменения в папке в моей файловой системе. Какие бы файлы ни изменялись в этой папке, я передаю их определенной функции, которая запускает потоки для каждого файла, который я им передаю.
Но сторожевой таймер или любой другой API-интерфейс наблюдателя за файловой системой (насколько мне известно) уведомляет пользователей файл за файлом, т.е. по мере поступления файлов они уведомляют пользователя. Но я хотел бы, чтобы он одновременно уведомлял меня о целой куче файлов, чтобы я мог передать этот список своей функции и использовать многопоточность. В настоящее время, когда я использую «сторожевой таймер», он уведомляет меня по одному файлу за раз, и я могу передать только этот файл своей функции. Я хочу передать ему много файлов за раз, чтобы иметь многопоточность.
Мне приходит в голову одно решение: вы видите, что когда вы копируете кучу файлов в папку, ОС показывает вам индикатор выполнения. Если бы я мог быть уведомлен, когда этот индикатор выполнения будет готов, то это было бы идеальным решением для моего вопроса. Но я не знаю, возможно ли это.
Также я знаю, что сторожевой таймер — это API опроса, и идеальным API для наблюдения за файловой системой будет API, управляемый прерываниями, такой как pyinotify. Но я не нашел никакого API, который был бы управляемым с помощью прерываний, а также кросс-платформенным. iWatch хорош, но только для Linux, а я хочу что-то для всех ОС. Итак, если у вас есть предложения по любому другому API, дайте мне знать.
Спасибо.
/usr/bin/cp
в Linux, индикатора выполнения нет. Таким образом, зависимость от индикатора выполнения не будет надежным кросс-платформенным решением. - person unutbu   schedule 04.10.2014get
блокируется до тех пор, пока не появится элемент, который нужно получить. Дуг Хеллман написал отличный набор руководств, которые помогут вам начать работу: по использованию Queue, модуль потоковой обработки, как настроить и использовать пул рабочих процессов, как настроить пул рабочих потоков. - person unutbu   schedule 04.10.2014