我正在为我的Raspberry Pi创建一个新脚本(p.py),我正在尝试组合名为Final.py和A.py的2个python脚本。我想执行Final.py大约5秒钟,然后杀死它并继续攻击A.py,运行它25秒并杀死它并无休止地重复整个过程。但是,这两个脚本都是循环的,我不知道如何结束这些进程。这里是p.py代码:
29
有没有人知道更好的想法或更好的方法来解决这个问题?一切都会非常感激!
答案 0 :(得分:1)
你正在尝试做的事情并没有任何意义。你运行这样的子脚本:
execfile('Finaaal.py') #looped script 1
但execfile
只是在当前解释器中运行该脚本,而不是作为单独的程序运行。这意味着如果没有杀死控制器脚本,脚本1.sh
就无法杀死Finaaal.py
。
答案很简单 - 您已导入subprocess
,您只需使用它来运行子脚本而不是execfile
。然后你甚至不需要1.sh
和2.sh
脚本;你可以直接kill
进程:
import subprocess
import sys
import time
p = subprocess.Popen([sys.executable, 'Finaaal.py'])
time.sleep(5.0)
p.kill()
p = subprocess.Popen([sys.executable, 'A.py'])
time.sleep(5.0)
p.kill()
由于您已将问题标记为python-2.7
和python3.x
,因此您可能需要考虑应使用哪个Python来运行子脚本。使用sys.executable
意味着它与用于运行控制器脚本的那个相同,这通常是你想要的(但如果没有,显然会做一些与众不同的事情,无论是那个""硬编码python3
"或者#34;无论shbang说什么"或者其他什么(适当的)。
(由于您似乎在POSIX上,您甚至可以修改Finaaal.py
和A.py
以捕获SIGKILL
并根据需要执行一些干净的关闭。或者,如果您需要硬关机而不是使用该选项,请改用terminate
。)