gpt4 book ai didi

python - 在 bash 中生成多个 python 脚本

转载 作者:行者123 更新时间:2023-12-01 07:15:36 25 4
gpt4 key购买 nike

我使用下面的脚本在服务器中生成多个 python 脚本。为每个脚本 l 提供的参数都不同,范围从 0 到 150。

for i in `seq 0 9`;
do
for j in `seq 0 14`;
do
f=$((i*15))
l=$((j+f))
./script --l ${l} &
done
i=0
for job in `jobs -p`
do
pids[${i}]=${job}
i=$((i+1))
done
for pid in ${pids[*]}; do
wait ${pid}
done
done

上述语法生成 15 个 Python 脚本,并等待每个子进程完成,然后再生成后续 15 个。但是,Python 脚本对于 l 的某些值需要很少的时间,而对于 l 的某些值则需要大量时间对于l的其他值。我的问题是,如果对于给定的一组 15 个 l 值,脚本只需要很少的时间来处理其中的 14 个值,而花费大量的时间来处理一个 l 值,那么上面的脚本会等待一个脚本完成,然后再生成下一个 15 个脚本,这会导致服务器中的许多核心保持空闲状态。我想知道是否有一种方法可以修改上面的代码,以便在每次其中一个子进程完成时生成一个新的子进程(以便在任何给定时间都有 15 个子进程在运行)。

谢谢

最佳答案

这应该可以解决问题:

for i in $(seq 150)
do
while [[ $(jobs | wc -l) -ge 15 ]]
do
wait -n $(jobs -p)
done
script --l "$i" &
done

这个想法是,如果有 15 个或更多作业,请等待至少其中一个完成,直到运行的作业不超过 15 个;然后产生下一个。 wait -n 很有用,因为当提到的任何进程退出时,它都会停止等待。

关于python - 在 bash 中生成多个 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57985190/

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