Python自身で再起動とは
Pythonを使用していて、エラーなどの理由からPythonのコードを再起動させた方が早い場合など、ありますよね。
そういった場合は次の手段が有効となります。
(ただし基本的にこれは強行手段なので褒められるやり方ではありませんし、推奨できるものではないことを念頭に次へお進みください。)
使う場面を上げれば死活チェックのシステムで使えそうですね。
自分では予期していない、ライブラリ内でメモリリークが発生し止まってしまう場合などは中々対策ができないので使えるかもしれません。
手法
pythonファイルと同階層に以下のbatファイルを作成します。
restart.bat
python main.py
main.py
import subprocess
import sys
import os
import time
print("hello")
# 3秒後に再起される
time.sleep(3)
# batファイルを実行させる
subprocess.Popen([fr"{os.getcwd()}\\restart.bat"])
# このPythonのプロセスを閉じる
sys.exit()
このようにbatファイルを用いて、外部から新たなPythonファイルの実行を促すことで間接的に再起動を行うことが可能となります。
注意
処理の途中にtime.sleepを入れ、待機させていますがこれがないと高速でループしてしまいPCに高負荷をかけてしまうので注意してください。