gpt4 book ai didi

python - 同时运行多个 python 文件并在一个完成时终止所有文件

转载 作者:太空狗 更新时间:2023-10-29 11:30:57 25 4
gpt4 key购买 nike

我需要同时运行多个 python 文件,但是当一个完成后,将其余的全部杀死。我只需要知道先完成的 python 文件的输出。经过反复试验,我决定使用 bash 文件(我正在运行 Ubuntu)同时启动所有文件,但是,一旦第一个文件完成,我就无法停止所有文件。请帮忙,谢谢!!!我尝试了很多在网上找到的答案,但都没有成功。我什至编写了一个 python 文件来杀死其他 python 文件,这些文件在从终端启动时有效,但在从 bash 文件或另一个 python 文件调用时无效。我觉得我把问题复杂化了。非常感谢任何帮助。

假设我接受一个名为 pass 的变量并将其传递给每个文件,这里是我想要并行运行的命令:

 read pass
python3 1.py "$pass"
python3 2.py "$pass"
python3 3.py "$pass"
python3 4.py "$pass"
python3 5.py "$pass"
python3 6.py "$pass"
python3 7.py "$pass"
python3 8.py "$pass"
python3 9.py "$pass"

最佳答案

这是一个关于如何并行启动多个 python 脚本的小示例。第一个脚本打印输出结果后,所有其他的都被杀死。

python脚本

import sys
import time
seconds = sys.argv[1]
time.sleep(int(seconds))
print("runner sleep {} seconds.".format(seconds))

脚本

start() {                   # function for starting python scripts
echo "start $@" # print which runner is started
"$@" & # start python script in background
pids+=("$!") # save pids in array
}

start ./runner.py 5 # start python scripts
start ./runner.py 7
start ./runner.py 1
start ./runner.py 2
start ./runner.py 3
start ./runner.py 9
start ./runner.py 8
start ./runner.py 3
start ./runner.py 4
start ./runner.py 7

wait -n "${pids[@]}" # wait for first finished process
kill "${pids[@]}" 2>/dev/null # kill all/other process

输出

start ./runner.py 5
start ./runner.py 7
start ./runner.py 1
start ./runner.py 2
start ./runner.py 3
start ./runner.py 9
start ./runner.py 8
start ./runner.py 3
start ./runner.py 4
start ./runner.py 7
runner sleep 1 seconds.

关于python - 同时运行多个 python 文件并在一个完成时终止所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55300087/

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