0

特定の入力が入ってくると大量の RES メモリを使用する Python で記述されたサーバーがあります。同じマシンで他の多くのものが実行されているため、その Python スクリプトが大量の RAM を継続的に占有するのは面倒です。 . いくつかの調査を行ったところ、これらのメモリを解放して OS に戻す唯一の確実な方法は、プロセスを終了することであることがわかりました。したがって、各入力を処理した後、Pythonスクリプトがメモリを使いすぎていることを検出したときに、Pythonスクリプトを再起動できることを望んでいます。

プロセスをリロードするために次のトリックを試しましたが、リロード後もプロセスが同じ量の RAM を使用していることがわかりました。クリーンアップは行われません。

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

この RAM 使用量をすべて継承せずに Python スクリプトを再起動する別のクリーンな方法はありますか?

4

1 に答える 1

0

実は私も似たような状況です。私はまだ解決策を思い付いていませんが、実行できる可能性があるのは、スクリプトの終了時にスクリプトを再起動する bash スクリプトまたは .bat ファイルを作成することです。Python 自体が終了してから再起動するため、これはすべての RAM を継承しない可能性が高くなります。

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

os.execl を呼び出すと、元の python スクリプト内で新しいプロセスが生成され、それが終了するまで待機してから終了するため、これは機能しません。そのため、まだバックグラウンドで実行されていて、まだ終了していないため、RAM を「継承」します。

于 2013-07-31T20:55:54.473 に答える