【发布时间】:2019-07-12 04:49:02
【问题描述】:
在运行我的脚本时,我正在动态运行一组 for 循环。基本上是调用一个项目列表,检查该项目需要在哪个“阶段”运行,然后按该顺序运行它们。当我尝试运行这些循环时,它会通过第一个对象,然后在终端中给出“[1]+ Stopped Script.py”。我找到了开始备份我的脚本的方法,但没有关于如何完全避免这种情况发生的帖子。
我尝试过使用Popen、call、check_output 等。它们都得到相同的结果。我确信这是我正在调用的另一个项目在它的末尾执行此操作,但我认为关闭的另一个程序不会杀死我的脚本,尤其是在子进程中。
我也尝试过使用线程和多处理。两者都无济于事。
def foo(list):
stages = 0
for c in things:
info = load_json_info(c)
if info["stage"] >= stages:
stages = info["stage"]
for p in list:
use_list(p)
stages = stages + 1
for i in range(stages):
for b in list:
info = load_json_info(b)
if info["stage"] == i:
if info["check"] != "NO":
output = call("command", shell=True)
if output == 0:
DO_THING()
else:
DONT_DO_THING()
else:
DONT_DO_THING()
它到达DO_THING() 并经历了所有这些,然后当需要调用另一个子进程时,它又死了。该子进程是否存在于DO_THING() 中,或者我将所有内容都注释掉,然后让它再次访问output = call("command", shell=True) 行。一旦它再次使用子进程,它就会停止。
人们有什么建议或方法可以阻止正在传递的内容以阻止我的脚本?
(提醒一下,我无法访问导致我的脚本停止的"command" 的源代码,而我正在使用的"command" 并不重要,因为我对此无能为力结束。我也必须使用这个"command"。)
【问题讨论】:
-
您的 python 中是否收到错误消息?您确定没有阻止命令再次运行,所以您的脚本只是飞过列表并结束吗?
标签: python subprocess