Multithreading “如何使用Linux”;削减;并行

Multithreading “如何使用Linux”;削减;并行,multithreading,parallel-processing,gnu,cut,gnu-parallel,Multithreading,Parallel Processing,Gnu,Cut,Gnu Parallel,我有一个以制表符分隔的大文件(10TB) 我想把这个文件分成若干列,我想用我的24个内核中的每一个并行地做 cut -f1,2,3 file > out 关于如何使用多核或并行实现这一点,您有什么想法吗 我有一些想法,比如 cat file | parallel --round-robin --pipe "cut -f1 1,2,3" > out cat file | parallel --round-robin --pipe --block 1000000k "cut -f

我有一个以制表符分隔的大文件(10TB)

我想把这个文件分成若干列,我想用我的24个内核中的每一个并行地做

cut -f1,2,3 file > out
关于如何使用多核或并行实现这一点,您有什么想法吗

我有一些想法,比如

cat file | parallel --round-robin --pipe  "cut -f1 1,2,3"  > out

cat file | parallel --round-robin --pipe --block 1000000k "cut -f1 1,2,3"  > out

如果磁盘不是限制因素(但CPU是):


这并不像你想象的那么有用。这里最耗时的事情是从磁盘传输数据,而不是
cut
操作
iostat-dkx 1
善于显示磁盘的利用率。这里是否有一个问题,即根据每个线程的完成时间,行/块的顺序可能不同?(即带block2的螺纹在带block1的螺纹之前完成)
-k
保持顺序。因此,输出的顺序将与按顺序运行的顺序相同。
parallel -k --pipepart -a big.tsv --block 1g cut -f1 1,2,3 > out