欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

解決步驟

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

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

import os
import subprocess
import time
from loguru import logger


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

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

得到如下結果:

TCP    0.0.0.0:5001           0.0.0.0:0              LISTENING       2404

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

2. 根據(jù)應用ID,結束這個應用程序

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

3. 再次根據(jù)指定的Python環(huá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("重啟預測模型,延遲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í)行命令與結果"""
    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}")  # 成功關閉
	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()

方法補充

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是要運行的python腳本,–params是參數(shù)。

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

方法2

在python中增加一些額外檢查異常的代碼,如果發(fā)生異常,就重新執(zhí)行,這里用的是遞歸的方法。下面的例子中,我設置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塊,可以捕獲可能導致腳本崩潰的異常,并在異常被捕獲后重新啟動腳本。具體實現(xiàn)如下:

import time
import os
import sys
def main():
    while True:
        try:
            # 主程序邏輯
            print("腳本正在運行...")
            time.sleep(10)  # 模擬長時間運行任務
        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秒后重啟自己。

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

相關文章

  • 基于python編寫的微博應用

    基于python編寫的微博應用

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

    python 列表推導和生成器表達式的使用

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

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

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

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

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

    詳解Python import方法引入模塊的實例

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

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

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

    Tensorflow的梯度異步更新示例

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

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

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

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

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

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

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

最新評論