【问题标题】:Control a python process form another python file从另一个 python 文件控制一个 python 进程
【发布时间】:2017-01-13 17:22:16
【问题描述】:

首先简要概述一下我目前的目标:

我想使用调度程序每秒执行一个简单的 python 程序。该程序读取一些数据并将结果输入数据库中。因为计划任务将在树莓派上运行几天,所以该进程应该在后台启动。因此,我想创建一个可以从后台作业启动、停止和获取当前状态的 python 文件。此外,应该可以在不停止后台作业的情况下退出并重新进入控制文件。

目前我尝试使用 apscheduler 每秒执行一次 python 文件。实际的问题是,我无法从另一个外部文件访问当前的 python 文件来控制状态。总体而言,我没有找到真正的解决方案,如何从外部文件控制子进程,并在重新启动控制 python 文件后再次找到相同的子进程。

编辑:

总的来说,就我现在所知,我能够使用他的 pid 找到当前进程。这样我就可以向当前进程发送终止信号。在我的预定文件中,我可以catch these signals 并以正常方式关闭程序。

【问题讨论】:

    标签: python python-3.x subprocess scheduled-tasks


    【解决方案1】:

    要控制(启动、重新启动、停止、调度)后台进程,请使用subprocess。这是子进程的example 超时弹出。

    要在scheduler 和background job 之间传递一些数据,请使用IPC 机制之一,例如套接字。

    【讨论】:

    • 可以控制进程我可以使用子进程但是如何在重启控制器(主进程)后再次找到正在运行的子进程?
    • 不,使用python的子进程创建的子进程通常会在控制程序结束后结束。
    • @VeitBjarsch 你可以使用像ps 这样的Linux 工具,见example。
    • 问题是这会以硬方式杀死进程并且不能正常退出。我找到了this。也许它会帮助解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多