GNU Parallel 不使用所有处理器

GNU Parallel not using all processors

我正在使用 GNU parallel 来加速进程。但是,GNU parallel 并没有使用我机器上的所有内核。我想知道这里的限制因素是什么。

命令:

find data -type f | parallel --pipe -P 70 python program.py > output 

但是,它只使用了 70 个内核中的 4 个。我想知道是否有人知道是否还有其他限制使其只能使用 4 个内核。

我不知道 program.py 会。但是 --pipefind 一起使用是非常不常见的。所以我想这就是你想要的:

find data -type f | parallel -P 70 python program.py > output 

对于 --pipefind 的输出必须至少为 70 MB,因为默认 --block-size 是 1 MB:

find data -type f | parallel --pipe -P 70 python program.py > output 

如果 program.py 确实读取标准输入上的文件名,那么您应该使用 --round-robin 和较小的 --block:

find data -type f | parallel --pipe --block 1k --round-robin -P 70 python program.py > output

这将从 find 获取输入并将第一个 1kByte 分配给第一个作业,将第 70kByte 分配给第 70 个作业,将第 71kByte 分配给第一个作业。