首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时运行多个python文件,并在完成后终止所有

同时运行多个python文件,并在完成后终止所有
EN

Stack Overflow用户
提问于 2019-03-22 12:55:50
回答 1查看 847关注 0票数 2

我需要同时运行多个python文件,但当其中一个文件完成时,会杀死所有其他的python文件。我只需要知道第一个完成的python文件的输出。经过多次尝试和错误之后,我决定使用bash文件(我正在运行Ubuntu)来同时启动所有文件,但是,一旦第一个文件是done.Please帮助,我就不能停止所有这些文件,谢谢!我尝试了很多在网上找到的答案,但都没有成功。我甚至编写了一个python文件来杀死其他python文件,该文件在从终端启动时工作,但在从bash文件或另一个python文件调用时不起作用。我觉得我已经把问题复杂化了。任何帮助都是非常感谢的。

假设我接受一个名为pass的变量,并将其传递给每个文件,下面是我希望并行运行的命令:

代码语言:javascript
复制
 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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 17:04:48

下面是一个示例,说明如何并行启动multible python脚本。在第一个脚本打印输出结果之后,所有其他地方都会被杀死。

python脚本

代码语言:javascript
复制
import sys
import time
seconds = sys.argv[1]
time.sleep(int(seconds))
print("runner sleep {} seconds.".format(seconds))

巴什脚本

代码语言:javascript
复制
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

输出

代码语言:javascript
复制
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.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55300087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档