停止在另一个脚本中运行的一个Python脚本

时间:2019-02-14 11:52:29

标签: python bash execution cancellation

我有一个从主脚本启动的Python应用程序,比如说main.pymain.py(因为组织了我的应用程序)在同一目录中引用和导入其他.py文件,这些文件包含其他功能。当我的应用程序持续运行时,它会从另一个脚本中导入这样的功能,该脚本也应该永远运行直到被明确取消。

是什么,我该如何取消那个特定脚本,同时保持其受影响的变量不变并且主脚本/较大的应用程序仍在运行?

我不打算针对特定功能停止执行。

2 个答案:

答案 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()