2012-12-13 65 views
0

我用Python編寫的服務器時,偶爾某些輸入進來,將使用大量RES內存。這將會是惱人的有python腳本繼續佔據那麼多內存因爲我們有很多其他的東西在同一臺機器上運行。我做了一些研究,發現將這些內存釋放回操作系統的唯一可行方法是退出該過程。所以我希望能夠在處理每個輸入後使用太多內存檢測到自己時重新啓動python腳本。重新開始一個python腳本時內存佔用過高

我嘗試了以下技巧來重新加載進程,但發現進程在重新加載後仍然使用盡可能多的RAM。沒有清理完成。

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

是否有另一種清潔的方式來重新啓動一個python腳本沒有繼承這一切的RAM使用?

回答

0

我實際上在類似的情況下我自己。我還沒有提出解決方案,但是您可以做的是製作一個bash腳本或.bat文件,以便在完成後重新啓動腳本。這很可能不會繼承所有的RAM,因爲python本身退出然後再次啓動。

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

這不起作用,因爲當你調用os.execl它產生一個新的進程的原始python腳本中並等待直到完成,然後退出。這就是爲什麼它「繼承」RAM,因爲它仍然在後臺運行,並且還沒有退出。