gpt4 book ai didi

bash - 单线程 'gnu parallel'

转载 作者:行者123 更新时间:2023-12-04 18:05:14 27 4
gpt4 key购买 nike

这听起来可能自相矛盾,但有没有一种方法可以以简单的“串行”方式并行运行,甚至无需加载线程池?我正在使用 parallel 作为 xargs 的更安全、更强大/功能更强大的替代方案。

我面临的问题是,在一段已经并行的代码中,我想按顺序处理一堆参数(工作实际上是微不足道的,我的 CPU 是已经运行 100%)。

我知道“-P 1”选项,但看起来即使那样,并行也会创建一个作业池(或其他东西),这实际上有相当大的开销。示例:

monarch:~/tests$ time ls -1 | xargs -n 1 -d $'\n' -I{} echo {} > /dev/null

real 0m1.084s
user 0m0.073s
sys 0m1.053s
monarch:~/tests$ time ls -1 | parallel -P1 'echo {} > /dev/null'

real 0m4.903s
user 0m2.235s
sys 0m3.046s

如您所见,这里的并行开销几乎是 400%。该示例当然很简单,但我的实际用例实际上并不比这复杂多少,而且我确实利用了 parallel 的字符串替换功能。

有什么更好的方法来完成我想做的事情吗?我想避免 for-loop/xargs,因为我必须重写那些字符串替换...

(我在 bash 中使用并行,这是值得的)

最佳答案

如果 GNU Parallel 占用了 100% 的内核,请查看:http://www.gnu.org/software/parallel/man.html#EXAMPLE:-Speeding-up-fast-jobs

此外,如果您不关心输出,--ungroup 将使它更快。

关于bash - 单线程 'gnu parallel',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28407401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com