gpt4 book ai didi

bash - fork /多线程进程 |狂欢

转载 作者:行者123 更新时间:2023-11-29 08:40:55 28 4
gpt4 key购买 nike

我想让我的一部分代码更有效率。我正在考虑让它分成多个进程并让它们一次执行 50/100 次,而不是一次。

例如(伪):

for line in file;
do
foo;
foo2;
foo3;
done

我希望这个 for 循环运行多次。我知道这可以通过 fork 来完成。它看起来像这样吗?

while(x <= 50)
parent(child pid)
{
fork child()
}
child
{
do
foo; foo2; foo3;
done
return child_pid()
}

还是我想错了?

谢谢!

最佳答案

默认情况下,在 bash 脚本(非交互式)中禁用 JOB CONTROL,因此您无法执行以下命令:job、fg 和 bg。

以下是适合我的方法:

#!/bin/sh

set -m # Enable Job Control

for i in `seq 30`; do # start 30 jobs in parallel
sleep 3 &
done

# Wait for all parallel jobs to finish
while [ 1 ]; do fg 2> /dev/null; [ $? == 1 ] && break; done

最后一行使用“fg”将后台作业置于前台。它在一个循环中执行此操作,直到 fg 返回 1 ($? == 1),当不再有更多后台作业时它会执行此操作。

关于bash - fork /多线程进程 |狂欢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455695/

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