最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Windows自動(dòng)化重啟python腳本的方法詳解

 更新時(shí)間:2025年04月28日 10:04:27   作者:呆萌的代Ma  
小編最近遇到一個(gè)需求,每天都需要定時(shí)重啟一個(gè)python腳本,這個(gè)腳本是跑在windows電腦上的,本文小編整理了三個(gè)實(shí)用的方法,大家可以參考一下

博主遇到一個(gè)需求:每天都需要定時(shí)重啟一個(gè)python腳本,這個(gè)腳本是跑在windows電腦上的,下面是博主的解決方法:

  • 獲取已經(jīng)啟動(dòng)的應(yīng)用的ID
  • kill這個(gè)應(yīng)用ID
  • 再次根據(jù)指定的Python環(huán)境運(yùn)行這個(gè)腳本

解決步驟

1. 獲取已經(jīng)啟動(dòng)的應(yīng)用ID

博主的程序會(huì)監(jiān)聽(tīng)到5001端口,因此根據(jù)這個(gè)特性,運(yùn)行如下代碼獲取啟動(dòng)的應(yīng)用ID:

import os
import subprocess
import time
from loguru import logger


def exec_cmd(cmd):
    """執(zhí)行命令與結(jié)果"""
    r = os.popen(cmd)
    text = r.read()
    r.close()
    return text

cmd = "netstat -aon|findstr 5001"
result = exec_cmd(cmd).strip()

得到如下結(jié)果:

TCP    0.0.0.0:5001           0.0.0.0:0              LISTENING       2404

可以看到,有一個(gè)TCP鏈接在監(jiān)聽(tīng)5001端口,其中最后一個(gè)2404就是這個(gè)應(yīng)用的ID

2. 根據(jù)應(yīng)用ID,結(jié)束這個(gè)應(yīng)用程序

_port = result.strip().split(' ')[-1]
exec_cmd(f"taskkill /T /F /PID {_port}")  # 成功關(guān)閉

3. 再次根據(jù)指定的Python環(huán)境運(yùn)行這個(gè)腳本

subprocess.Popen(r"C:\Users\User4\Anaconda3\envs\my_env\python.exe main_run.py",
                     cwd=r"C:\Users\User4\Desktop\my_python_bin")
logger.success("重啟預(yù)測(cè)模型,延遲20s....")

這里用到了subprocess.Popen(),其中涉及到了2個(gè)目錄和1個(gè)文件:

第一行C:\Users\User4\Anaconda3\envs\my_env\python.exe:這個(gè)是啟動(dòng)python的解釋器完整路徑(最好是完整路徑)

第一行main_run.py:這個(gè)是需要重啟的python腳本文件

第二行C:\Users\User4\Desktop\my_python_bin:這個(gè)是腳本所在的目錄

以上程序可以理解為:

解釋器:C:\Users\User4\Anaconda3\envs\my_env\python.exe

腳本目錄:C:\Users\User4\Desktop\my_python_bin\main_run.py

完整示例

import os
import subprocess
import time
from loguru import logger


def exec_cmd(cmd):
    """執(zhí)行命令與結(jié)果"""
    r = os.popen(cmd)
    text = r.read()
    r.close()
    return text

def restart_my_python():
	cmd = "netstat -aon|findstr 5001"
	result = exec_cmd(cmd).strip()
	if result != "":
        time.sleep(0.5)
        _port = result.strip().split(' ')[-1]
        exec_cmd(f"taskkill /T /F /PID {_port}")  # 成功關(guān)閉
	subprocess.Popen(r"C:\Users\User4\Anaconda3\envs\my_env\python.exe main_run.py",
	                 cwd=r"C:\Users\User4\Desktop\my_python_bin")
	logger.success("重啟腳本,延遲5s....")
    time.sleep(5)


restart_my_python()

方法補(bǔ)充

1.自動(dòng)重啟掛掉的python腳本

為內(nèi)存問(wèn)題或者其它blabla問(wèn)題(總之不是代碼問(wèn)題),程序可能會(huì)偶爾掛掉,我們又不能整天盯著程序,怎么辦呢?寫(xiě)個(gè)腳本來(lái)檢查程序是否掛掉,如果掛掉就重啟,這是一個(gè)不錯(cuò)的想法,具體做法依操作系統(tǒng)而不同。

方法1

在linux下可以新建一個(gè)名為run.sh的腳本:

#!/bin/sh
while [ 1 ]; do
python program.py --params
done

在命令行中這樣啟動(dòng):

sh run.sh

其中program.py是要運(yùn)行的python腳本,–params是參數(shù)。

在windows下可以類(lèi)似地建個(gè)bat文件,由于bat不太熟,所以這部分就先空著。

方法2

在python中增加一些額外檢查異常的代碼,如果發(fā)生異常,就重新執(zhí)行,這里用的是遞歸的方法。下面的例子中,我設(shè)置count最大為3,為了避免無(wú)限遞歸下去。

import time
count = 0
def compute_number():
for i in xrange(10):
print 'count number: %s' % str(i+1)
time.sleep(1)
raise Exception("a", "b")
def main():
print "AutoRes is starting"
print "Respawning"
global count
if count < 3:
try:
count += 1
compute_number()
except Exception, e:
print e
main()
finally:
print 'success'
if __name__ == "__main__":
main()

方法3

從這里 借鑒的做法:

#!/usr/bin/env python

import os, sys, time

def main():

print "AutoRes is starting"

executable = sys.executable

args = sys.argv[:]

args.insert(0, sys.executable)

time.sleep(1)

print "Respawning"

os.execvp(executable, args)

if __name__ == "__main__":

main()

2.python腳本如何自動(dòng)重啟

通過(guò)在Python腳本中使用try-except塊,可以捕獲可能導(dǎo)致腳本崩潰的異常,并在異常被捕獲后重新啟動(dòng)腳本。具體實(shí)現(xiàn)如下:

import time
import os
import sys
def main():
    while True:
        try:
            # 主程序邏輯
            print("腳本正在運(yùn)行...")
            time.sleep(10)  # 模擬長(zhǎng)時(shí)間運(yùn)行任務(wù)
        except Exception as e:
            print(f"發(fā)生錯(cuò)誤: {e}")
            print("腳本將在5秒后重啟...")
            time.sleep(5)
            os.execv(sys.executable, ['python'] + sys.argv)
if __name__ == "__main__":
    main()

該腳本在異常發(fā)生時(shí),會(huì)打印錯(cuò)誤信息并在5秒后重啟自己。

到此這篇關(guān)于Windows自動(dòng)化重啟python腳本的方法詳解的文章就介紹到這了,更多相關(guān)python腳本重啟內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python動(dòng)態(tài)導(dǎo)入模塊的方法實(shí)例分析

    Python動(dòng)態(tài)導(dǎo)入模塊的方法實(shí)例分析

    這篇文章主要介紹了Python動(dòng)態(tài)導(dǎo)入模塊的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python動(dòng)態(tài)導(dǎo)入系統(tǒng)模塊、自定義模塊以及模塊列表的相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Python制作運(yùn)行進(jìn)度條的實(shí)現(xiàn)效果(代碼運(yùn)行不無(wú)聊)

    Python制作運(yùn)行進(jìn)度條的實(shí)現(xiàn)效果(代碼運(yùn)行不無(wú)聊)

    這篇文章主要介紹了Python制作運(yùn)行進(jìn)度條的實(shí)現(xiàn)效果(代碼運(yùn)行不無(wú)聊),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python如何配置環(huán)境變量詳解

    Python如何配置環(huán)境變量詳解

    今天帶大家學(xué)習(xí)python如何配置環(huán)境變量,文中有非常詳細(xì)的步驟,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析

    python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析

    這篇文章主要介紹了python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python3之文件讀寫(xiě)操作的實(shí)例講解

    Python3之文件讀寫(xiě)操作的實(shí)例講解

    下面小編就為大家分享一篇Python3之文件讀寫(xiě)操作的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Python爬蟲(chóng)JSON及JSONPath運(yùn)行原理詳解

    Python爬蟲(chóng)JSON及JSONPath運(yùn)行原理詳解

    這篇文章主要介紹了Python爬蟲(chóng)JSON及JSONPath運(yùn)行原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python中not、and和or的優(yōu)先級(jí)與詳細(xì)用法介紹

    python中not、and和or的優(yōu)先級(jí)與詳細(xì)用法介紹

    這篇文章主要給大家介紹了python中not、and和or的優(yōu)先級(jí)與詳細(xì)用法介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Ubuntu16.04/樹(shù)莓派Python3+opencv配置教程(分享)

    Ubuntu16.04/樹(shù)莓派Python3+opencv配置教程(分享)

    下面小編就為大家分享一篇Ubuntu16.04/樹(shù)莓派Python3+opencv配置教程。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python獲取本機(jī)mac地址和ip地址的方法

    python獲取本機(jī)mac地址和ip地址的方法

    這篇文章主要介紹了python獲取本機(jī)mac地址和ip地址的方法,涉及Python獲取系統(tǒng)相關(guān)信息的技巧,需要的朋友可以參考下
    2015-04-04
  • Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實(shí)現(xiàn)方法

    Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實(shí)現(xiàn)方法

    這篇文章主要介紹了Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

望奎县| 黑山县| 邵阳市| 车致| 澜沧| 清镇市| 栖霞市| 武城县| 抚顺县| 奇台县| 商丘市| 图木舒克市| 布尔津县| 乡城县| 乐至县| 额尔古纳市| 吉安县| 手游| 滨海县| 夏邑县| 夹江县| 嘉义县| 建宁县| 大渡口区| 密山市| 济南市| 若羌县| 无锡市| 出国| 城市| 罗甸县| 舒兰市| 临猗县| 河池市| 临海市| 邵阳市| 青田县| 靖远县| 嘉兴市| 海原县| 马山县|