ここでは、2 つの可能なアプローチを見ることができます。
まず、問題を 2 つに分割します。1 - 何を処理するかを考えます。2 - 処理を行います。パート 1 はおそらく単独で実行する必要があるため、処理が必要なものの 100% 正確なリストが得られます。次に、リストの分割と複数のスレッドの導入に関して、凝った (またはあまり凝っていない) ロジックを実装できます。
次に、@CarlosGrappa が提案するものと同様のことを行います。したがって、基本的には、独自の「事前にプログラムされた」フィルターを使用して各スレッドを作成します。カルロスが示唆するように、それはその年かもしれません。または、ファイルのタイムスタンプの 1 時間ごとに 1 つずつ、合計 24 のスレッドを作成することもできます。または、60 個のスレッドがあり、それぞれが正時を過ぎた特定の分を調べます。基本的には、(a) 負荷をできるだけ均等に分割するための明確な基準と、(b) データ ファイルが 1 回だけ処理されることを保証するための明確な基準を与えるものであれば何でもかまいません。
明らかに、これらのアプローチの 2 番目の方がより高速に実行されますが、ファイルを分割する方法については、さらに考慮する必要があります。最初の方法では、完全なリストを取得したら、基本的に、プロセッサで一度に 100 個、1000 個、または 10000 個などのファイルをチャックすることができます。