web-dev-qa-db-ja.com

ファイルを複数のスレッドで複数のファイルに分割するにはどうすればよいですか?

だから私は100GBのテキストファイルを持っていますそしてそれを10000ファイルに分割したいと思います。私は以前、次のようなタスクを実行していました。

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

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

複数のスレッドでそのようなタスクを実行できる低レベル(または非常に高性能)のツールはありますか?.

必要に応じてファイルをコピーし、可能であれば複数のコアを利用したいと思います(そうは思いません!)。

2

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

さらに、改行のみで分割したい場合は、各スレッドをどこからどこにコピーする必要があるかが事前に明確ではありません。あなたはおそらくそのための特別なツールを書かなければならないでしょう。

たとえば、別のアクションが必要な場合は、状況が異なる可能性があります。分割と圧縮。その場合、複数のコアを使用すると役立つ場合がありますが、I/Oはボトルネックではありません(ドライブとCPU速度によって異なります)。

2
Hauke Laging