所以我有一个 100GB 的文本文件,我想把它分成 10000 个文件。我曾经用类似的方法来完成这样的任务:
split -l <number of lines> -d --additional-suffix=.txt bigfile small_files_prefix
但是我试图用这个来做到这一点,我监控了我的系统并意识到它没有使用太多的内存或 CPU,所以我意识到它只是用一个线程从头到尾读取文件。
是否有任何低级(或非常高性能)的工具可以用多个线程完成这样的任务。
如果有必要,我什至更愿意复制文件,如果可能更快的话,我会利用我的多个内核(我不这么认为!)。
即使使用 SSD,拆分文件的瓶颈也是 I/O。拥有多个进程/线程不会获得性能并且通常会慢得多。
此外,如果您只想在换行符上拆分,那么事先并不清楚每个线程必须从哪里复制到哪里。您可能必须为此编写一个特殊工具。
如果需要其他操作(例如拆分和压缩),情况可能会有所不同。在这种情况下,使用多个内核可能会有所帮助,但 I/O 不是瓶颈(取决于驱动器和 CPU 速度)。