如何使用多线程将一个文件拆分为多个文件?

如何使用多线程将一个文件拆分为多个文件?

所以我有一个 100GB 的文本文件,我想将其拆分为 10000 个文件。我曾经用类似的东西来完成这样的任务:

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

但我尝试用这个来做到这一点,我监视了我的系统,并意识到它没有使用太多内存或 CPU,所以我意识到它只是用一个线程从头到尾读取文件。

是否有任何低级别(或非常高性能)的工具可以使用多个线程完成此类任务。

我什至更愿意在必要时复制文件,并利用我的多核(如果可能更快的话)(我不这么认为!)。

答案1

即使使用 SSD,分割文件的瓶颈也是 I/O。为此拥有多个进程/线程不会提高性能,而且通常会慢得多。

此外,如果您只想按换行符进行拆分,则事先不清楚每个线程必须从何处复制到何处。您可能必须为此编写一个特殊的工具。

如果需要其他操作(例如拆分和压缩),情况可能会有所不同。在这种情况下,使用多个内核可能会有所帮助,但 I/O 并不是瓶颈(取决于驱动器和 CPU 速度)。

相关内容