当内存使用率过高时重新启动python脚本

时间:2012-12-13 09:42:34

标签: memory-management python-2.7

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

这不起作用,因为当你调用os.execl时,它会在原始python脚本中生成一个新进程并等待直到完成,然后退出。这就是为什么它“继承”RAM,因为它仍然在后台运行并且还没有退出。