亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Windows自動化重啟python腳本的方法詳解

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

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

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

解決步驟

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

博主的程序會監(jiān)聽到5001端口,因此根據(jù)這個特性,運(yùn)行如下代碼獲取啟動的應(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

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

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

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

3. 再次根據(jù)指定的Python環(huán)境運(yù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("重啟預(yù)測模型,延遲20s....")

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

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

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

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

以上程序可以理解為:

解釋器: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.自動重啟掛掉的python腳本

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

方法1

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

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

在命令行中這樣啟動:

sh run.sh

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

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

方法2

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

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腳本如何自動重啟

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

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

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

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

相關(guān)文章

  • 基于python編寫的微博應(yīng)用

    基于python編寫的微博應(yīng)用

    這篇文章主要介紹了基于python編寫的微博應(yīng)用,是針對微博開放平臺SDK開發(fā)的具體應(yīng)用,非常具有實(shí)用價值,需要的朋友可以參考下
    2014-10-10
  • python 列表推導(dǎo)和生成器表達(dá)式的使用

    python 列表推導(dǎo)和生成器表達(dá)式的使用

    這篇文章主要介紹了python 列表推導(dǎo)和生成器表達(dá)式的使用方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python return語句如何實(shí)現(xiàn)結(jié)果返回調(diào)用

    Python return語句如何實(shí)現(xiàn)結(jié)果返回調(diào)用

    這篇文章主要介紹了Python return語句如何實(shí)現(xiàn)結(jié)果返回調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • python使用TensorFlow讀取和批處理CSV文件

    python使用TensorFlow讀取和批處理CSV文件

    本文旨在給大家使用 TensorFlow 庫讀取 CSV 文件,并將其數(shù)據(jù)以批次的形式進(jìn)行處理和展示,通過該實(shí)驗(yàn),我們希望掌握 TensorFlow 中 tf.data.TextLineDataset 的使用方法,以及如何解析 CSV 數(shù)據(jù)并進(jìn)行批量處理,需要的朋友可以參考下
    2025-03-03
  • 詳解Python import方法引入模塊的實(shí)例

    詳解Python import方法引入模塊的實(shí)例

    這篇文章主要介紹了詳解Python import方法引入模塊的實(shí)例的相關(guān)資料,在Python用import或者from…import或者from…import…as…來導(dǎo)入相應(yīng)的模塊,需要的朋友可以參考下
    2017-08-08
  • 深入了解Python中描述器的使用

    深入了解Python中描述器的使用

    Python描述器是Python編程語言中的一個重要特性,它提供了一種靈活且強(qiáng)大的機(jī)制來控制屬性訪問行為。在本文中,我們將詳細(xì)介紹Python描述器的概念、實(shí)現(xiàn)方式以及如何使用Python描述器來增強(qiáng)我們的Python程序
    2023-03-03
  • Tensorflow的梯度異步更新示例

    Tensorflow的梯度異步更新示例

    今天小編就為大家分享一篇Tensorflow的梯度異步更新示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 詳解Python生成器和基于生成器的協(xié)程

    詳解Python生成器和基于生成器的協(xié)程

    說到Python協(xié)程就會想到,進(jìn)程和線程,當(dāng)然更離不開生成器.今天就給大家整理了本篇文章,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Python結(jié)合SpeechRecognition和gTTS庫打造智能語音備忘錄

    Python結(jié)合SpeechRecognition和gTTS庫打造智能語音備忘錄

    這篇文章主要為大家詳細(xì)介紹了如何利用Python的SpeechRecognition和gTTS庫,打造一款集語音輸入,自動轉(zhuǎn)文字,朗讀保存于一體的智能語音備忘錄工具,感興趣的小伙伴可以了解下
    2025-04-04
  • 解決python replace函數(shù)替換無效問題

    解決python replace函數(shù)替換無效問題

    在本篇文章里小編給大家整理的是一篇關(guān)于python replace函數(shù)替換無效問題的解決方法,需要的朋友們可以參考下。
    2020-01-01

最新評論