0

我有一个用 python 编写的服务器,当偶尔有某些输入进入时,它会使用大量 RES 内存。让那个 python 脚本持续占用这么多 RAM 会很烦人,因为我们在同一台机器上运行了很多其他的东西. 我做了一些研究,发现将这些内存释放回操作系统的唯一可靠方法是退出进程。因此,我希望能够在处理每个输入后检测到自己使用过多内存时重新启动 python 脚本。

我尝试了以下技巧来重新加载该进程,但发现该进程在重新加载后仍然使用尽可能多的 RAM。没有进行清理。

os.execl(sys.executable, sys.executable, * sys.argv)

是否有另一种干净的方法来重新启动 python 脚本而不继承所有这些 RAM 使用情况?

4

1 回答 1

0

我自己其实也有类似的情况。我还没有想出一个解决方案,但你可以做的是制作一个 bash 脚本或 .bat 文件,在脚本完成时重新启动它。这很可能不会继承所有的 RAM,因为 python 本身退出然后重新启动。

os.execl(sys.executable, sys.executable, * sys.argv) 

这不起作用,因为当您调用 os.execl 时,它会在原始 python 脚本中生成一个新进程并等待该进程完成,然后退出。这就是它“继承” RAM 的原因,因为它仍在后台运行并且尚未退出。

于 2013-07-31T20:55:54.473 回答