我有一个从主脚本启动的Python应用程序,比如说main.py
。 main.py
(因为组织了我的应用程序)在同一目录中引用和导入其他.py
文件,这些文件包含其他功能。当我的应用程序持续运行时,它会从另一个脚本中导入这样的功能,该脚本也应该永远运行直到被明确取消。
是什么,我该如何取消那个特定脚本,同时保持其受影响的变量不变并且主脚本/较大的应用程序仍在运行?
我不打算针对特定功能停止执行。
答案 0 :(得分:1)
我在我的utils中使用kill函数来杀死我认识的任何不需要的python进程。请注意,以下代码已在Ubuntu Linux和Mac OS计算机上经过测试/运行。
def get_running_pids(process_name):
pids = []
p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
out, err = p.communicate()
for line in out.splitlines():
if process_name in line.decode('utf-8'):
pid = int(line.decode('utf-8').split(None, 1)[0])
pids.append(pid)
return pids
def kill_process_with_name(process_name):
pids = get_running_pids(process_name)
for pid in pids:
os.kill(pid, signal.SIGKILL)
答案 1 :(得分:1)
不确定确切的语法,因为我目前无法进行测试,但是我在想这样的事情:
HaltException.py:
class HaltException(Exception):
pass
-
main.py:
from HaltException import HaltException
class Functions():
def a(self):
print("hey")
self.b()
return "1"
def b(self):
print("hello")
raise HaltException()
def main():
func_obj = Functions()
try:
func_obj.a()
except HaltException as e:
pass
print("Awesome")
main()