我需要同时运行多个python文件,但当其中一个文件完成时,会杀死所有其他的python文件。我只需要知道第一个完成的python文件的输出。经过多次尝试和错误之后,我决定使用bash文件(我正在运行Ubuntu)来同时启动所有文件,但是,一旦第一个文件是done.Please帮助,我就不能停止所有这些文件,谢谢!我尝试了很多在网上找到的答案,但都没有成功。我甚至编写了一个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"发布于 2019-03-22 17:04:48
下面是一个示例,说明如何并行启动multible 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.https://stackoverflow.com/questions/55300087
复制相似问题