マルチスレッドを使用してファイルを複数のファイルに分割する方法は?

マルチスレッドを使用してファイルを複数のファイルに分割する方法は?

それで、100GBのテキストファイルがあり、それを10000個のファイルに分割したいと思います。私は次のようなことをするために同様のものを使用しました。

split -l <number of lines> -d --additional-suffix=.txt bigfile small_files_prefix

ところでこれでやろうとしたら、システムを監視してメモリやCPUをあまり使わないということに気づいたので、ただ1つのスレッドでファイルを最初から最後まで読み込むということに気づきました。

複数のスレッドを使用してこれらのタスクを実行できる低レベル(または非常に高いパフォーマンス)ツールはありますか?

私は必要に応じてファイルをコピーし、より速い場合はマルチコアを利用することを好みます(そうではありません!)。

ベストアンサー1

SSDを使用しても、ファイル分割のボトルネックはI / Oです。このために複数のプロセス/スレッドを使用するとパフォーマンスが向上せず、通常ははるかに遅くなります。

また、改行文字のみに分割したい場合は、各スレッドをどこからどこにコピーする必要があるのか​​はあまり明確ではありません。これを行うには、特別なツールを作成する必要があります。

分割や圧縮などの他の作業が必要な場合、状況は異なる場合があります。この場合、マルチコアを使用すると便利ですが、I / Oはボトルネックではありません(ドライブとCPUの速度によって異なります)。

おすすめ記事