python 重啟程式 重新啟動Python程式

2021-10-11 00:10:02 字數 1466 閱讀 9992

我會繞過所有的焦慮,你可能會從試圖重新執行自己,把它交給環境。

我的意思是:當程式以特定的「重新啟動」**退出時,有乙個控制程式只在迴圈中執行程式(使用與給定引數相同的引數)。這可以像cmd檔案一樣簡單,也可以像使用os.system的另乙個(非常簡單)python程式一樣複雜。基本上,只要控制程式得到**「restart」,它就會用完全相同的引數重新執行程式。任何其他**都會導致它與該**一起退出。

當您想要完全退出時,讓真正的python程式退出並返回**0(或者任何在錯誤情況下不是「重啟」**的**)。

如果您只想迴圈到程式的另乙個迭代(例如重新讀取配置),請退出並使用控制程式識別的「重新啟動」**。

但是您可能還需要考慮重新設計應用程式,以便它可以隨時重新讀取其配置。這將使整個問題消失。你沒有提到為什麼這不是乙個選擇,所以我假設你有一些理由,為什麼它不會工作。

但是,如果你不這樣做,我會選擇這條路。

為第乙個選項提供一些示例**(這是在windows上,但在cygwin下-同樣的基本規則應該適用於windows原生python,但是您應該檢查來自os.system的返回值)> cat phase1.py

#!/usr/bin/python

import os

status = 9

while status == 9:

status = int(os.system ("./phase2.py") / 256) # exit code is upper 8 bits

print "controller: %d"%(status)

> cat phase2.py

#!/usr/bin/python

import sys

import time

time.sleep(1)

val = int(time.time())%10

if val == 0:

rc = 0

else:

rc = 9

print "program: %d -> %d"%(val,rc)

sys.exit(rc)

> ./phase1.py

program: 2 -> 9

controller: 9

program: 3 -> 9

controller: 9

program: 4 -> 9

controller: 9

program: 5 -> 9

controller: 9

program: 7 -> 9

controller: 9

program: 8 -> 9

controller: 9

program: 9 -> 9

controller: 9

program: 0 -> 0

controller: 0

您可以看到控制器使用退出**9來決定是否重新執行程式。程式本身是乙個啞程式,除非它是10秒的倍數,否則返回9。

VC實現程式重新啟動

重啟程式 如下 process information info startupinfo startup char szpath 128 char szcmdline bool bsucc createprocess szpath,szcmdline,null,null,false,normal p...

Linux下防止程式重新啟動

有一些程式在同一伺服器同一時間只能執行乙個,因此這樣的程式應該需要乙個排外的處理。當程式再次執行時,檢測到該程式已經執行了,那麼程式停止結束。檔案和記錄鎖 fcntl 和f setlk 設定記錄鎖 提供一種方法確保只有程式只被正在執行一次。如果每乙個程式對乙個固定的檔案進行加鎖 寫,只有這個鎖 連續...

監視Python程式自動退出,並重新啟動程式

有時,我們會遇到python程式莫名其妙地退出,也沒有任何異常提示,但我們希望程式能夠一直執行,即便異常終止,也能自動啟動,這時我們可以寫乙個監視程式,來達到目的 coding utf 8 usr bin python import os import subprocess res subproce...