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

标签 python bash execution cancellation

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

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

我不知道如何针对特定函数来停止其执行。

最佳答案

我在我的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)

关于python - 停止一个正在另一个 Python 脚本中运行的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54689784/

相关文章:

linux - 在 Linux 中,如何查找修改日期不早于给定文件的文件?

bash - Shell 脚本在退出时终止后台进程

javascript - 如何防止此 javascript 被评估?

c - 添加额外的 printf 行会影响 C 代码

linux - 在电子表格中查找文本 line1 并获取第 2 列

java - 如果 Linux 命令包含特殊符号,则无法使用 java

python - Pandas .iloc[] 不适用于索引范围

用于 Apple HTTP Live 流(HLS)的 Python 模块?

python - 高效的元组列表比较

python - Python 中文本文件的意外回溯