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
会。但是 --pipe
和 find
一起使用是非常不常见的。所以我想这就是你想要的:
find data -type f | parallel -P 70 python program.py > output
对于 --pipe
,find
的输出必须至少为 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 分配给第一个作业。
我正在使用 GNU parallel 来加速进程。但是,GNU parallel 并没有使用我机器上的所有内核。我想知道这里的限制因素是什么。
命令:
find data -type f | parallel --pipe -P 70 python program.py > output
但是,它只使用了 70 个内核中的 4 个。我想知道是否有人知道是否还有其他限制使其只能使用 4 个内核。
我不知道 program.py
会。但是 --pipe
和 find
一起使用是非常不常见的。所以我想这就是你想要的:
find data -type f | parallel -P 70 python program.py > output
对于 --pipe
,find
的输出必须至少为 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 分配给第一个作业。