4

ディレクトリに表示されるファイルを監視するために、pyinotify (process_IN_MOVED イベント) を使用しています。新しいファイルが表示されると、このイベントがトリガーされ、ファイルが何らかの方法で処理されます。問題は、私が処理できるよりも速くファイルがディレクトリに表示されることがあるということです。つまり、多数のファイルが処理されないということです。10 秒間スリープしてから、新しいファイルなどを見つけるために起動する機能を持つこともできますが、可能であればイベントベースのソリューションに固執したいと思っています。これを行う方法はありますか?

4

3 に答える 3

3

通常、ここにスレッド プールを実装して処理を処理しますが、イベント ウォッチャーは単にイベントを監視してプールに渡します。大まかな例:

(event happens) -> 
Watcher registers the event -> 
puts it into the thread pool queue -> 
thread pool processes the event

そうすれば、ウォッチャーは待機部分以外の時間を最小限に抑えることができるため、更新を見逃す可能性が大幅に減少します。

于 2012-07-26T18:47:09.427 に答える
2

Twistedはinotifyをサポートしています。処理を行うためのコールバックを与えることができます。sleepあなたは間違いなくingになりたくありません。インプロセスで実行するか、別のプロセスで実行するかは、実行している処理の種類によって異なりますが、イベントを失うことはありません。

于 2012-07-26T18:39:38.160 に答える
1

Humungus が指摘しているように、ここではスレッド プールが適切なオプションです。

まさにこの問題のために書いたコードを次の場所に投稿しました。

https://github.com/timstaley/autocrunch

アプリケーション固有の詳細で少し雑然としていますが、独自のニーズに合わせて代替関数をドロップできるはずです。ある時点で縮小版のブログ投稿を書くかもしれませんが、今は時間がありません。チッ!

于 2013-05-09T11:31:16.087 に答える