Python 脚本无法正确重新启动

标签 python linux memory-leaks process

我有一个 Python 脚本,我想让它自行重新启动。我通过谷歌搜索发现了以下几行:

def restart_program():
    """Restarts the current program.
    Note: this function does not return. Any cleanup action (like
    saving data) must be done before calling this function."""
    python = sys.executable
    os.execl(python, python, * sys.argv)

但是在尝试之后问题就变得明显了。我正在一个非常小的嵌入式系统上运行,并且我很快就耗尽了内存(在这个函数的 2 到 3 次迭代之后)。检查进程列表,我可以看到一大堆Python进程。 现在,我意识到,我可以检查进程列表并杀死所有具有与我不同的 PID 的进程 - 这是我必须做的还是有更好的 Python 解决方案?

最佳答案

这会使用与生成第一个进程相同的调用生成一个新的子进程,但它不会停止现有进程(更准确地说:现有进程等待子进程退出)。

更简单的方法是重构您的程序,这样您就不必重新启动它。为什么需要这样做?

关于Python 脚本无法正确重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602013/

相关文章:

python - 属性错误: 'module' object has no attribute 'ZKLib'

python - 将所有整数列更改为类别 python

linux - 如何使用 tor 浏览器包从 vidalia 面板启动 Tor 浏览器?

linux - XMonad:dmenu 不在启动时启动/生成

c++ - vector 中的动态对象创建

python - 在 Python 中为 Azure IoT 中心生成具有到期日的 SAS token

python - TemporaryFileWrapper 实例没有 __call__ 方法

linux - 我的第一个示例 cron 作业不工作

c++ - 查找数组之间的内存泄漏

iPhone编程: avaudioplayer leaks memory on play