2

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 を持つすべてのプロセスを強制終了できることに気付きました。

4

2 に答える 2

2

これにより、最初のプロセスの生成に使用されたのと同じ呼び出しを使用して新しい子プロセスが生成されますが、既存のプロセスは停止しません (より正確には、既存のプロセスは子プロセスが終了するのを待ちます)。

簡単な方法は、プログラムをリファクタリングして、再起動する必要がないようにすることです。なぜこれを行う必要があるのですか?

于 2013-09-03T21:48:11.137 に答える