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

Python如何精準(zhǔn)判斷某個(gè)進(jìn)程是否在運(yùn)行

 更新時(shí)間:2025年04月24日 14:23:55   作者:程序員總部  
這篇文章主要為大家詳細(xì)介紹了Python如何精準(zhǔn)判斷某個(gè)進(jìn)程是否在運(yùn)行,本文為大家整理了3種方法并進(jìn)行了對(duì)比,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、為什么需要判斷進(jìn)程是否存在

想象這個(gè)場(chǎng)景:你寫(xiě)了一個(gè)自動(dòng)化腳本,需要先檢查某個(gè)后臺(tái)服務(wù)是否已經(jīng)啟動(dòng)。如果直接運(yùn)行你的程序,而依賴的服務(wù)沒(méi)啟動(dòng),整個(gè)系統(tǒng)就可能崩潰。這時(shí)候,用Python自動(dòng)檢測(cè)進(jìn)程是否存在就成了關(guān)鍵能力!

比如:

  • 監(jiān)控服務(wù)器上的MySQL是否意外崩潰
  • 確保爬蟲(chóng)程序沒(méi)有重復(fù)啟動(dòng)
  • 檢查殺毒軟件是否正常運(yùn)行

這些需求都需要一個(gè)可靠的方法來(lái)判斷進(jìn)程狀態(tài)。下面我們就用Python實(shí)現(xiàn)這個(gè)功能!

二、方法1:用psutil庫(kù)(推薦)

psutil是Python最強(qiáng)的系統(tǒng)監(jiān)控庫(kù)之一,跨平臺(tái)支持Windows/Linux/Mac。安裝它:

pip install psutil

檢查Chrome是否運(yùn)行的代碼:

import psutil

def is_process_running(process_name):
    for proc in psutil.process_iter(['name']):
        if proc.info['name'] == process_name:
            return True
    return False

if is_process_running('chrome.exe'):
    print("Chrome正在運(yùn)行!")
else:
    print("Chrome未運(yùn)行")

優(yōu)點(diǎn):

  • 代碼簡(jiǎn)潔
  • 支持模糊匹配(比如只輸入"chrome")
  • 能獲取進(jìn)程詳細(xì)信息(CPU、內(nèi)存等)

實(shí)測(cè)數(shù)據(jù):

在測(cè)試機(jī)上掃描1000個(gè)進(jìn)程只需0.02秒!

三、方法2:用os.system調(diào)用系統(tǒng)命令

不同操作系統(tǒng)要用不同命令:

Windows系統(tǒng):

import os

def check_process_win(process_name):
    return os.system(f'tasklist | find "{process_name}"') == 0

print("Notepad運(yùn)行中" if check_process_win('notepad.exe') else "未找到記事本")

Linux/Mac系統(tǒng):

def check_process_linux(process_name):
    return os.system(f'pgrep -f "{process_name}"') == 0

缺點(diǎn):

  • 依賴系統(tǒng)命令
  • 不同平臺(tái)要寫(xiě)不同代碼
  • 性能較差(每次都要啟動(dòng)新進(jìn)程)

四、方法3:用subprocess獲取詳細(xì)進(jìn)程信息

想要更靈活地處理進(jìn)程信息?可以用subprocess模塊:

import subprocess

def get_process_details(name):
    try:
        output = subprocess.check_output(['ps', '-aux']).decode()
        return [line for line in output.split('\n') if name in line]
    except:
        return []

chrome_processes = get_process_details('chrome')
print(f"找到{len(chrome_processes)}個(gè)Chrome進(jìn)程")

適用場(chǎng)景:

  • 需要獲取進(jìn)程的完整命令行參數(shù)
  • 要分析進(jìn)程的資源占用情況

五、性能對(duì)比測(cè)試

我們?cè)谕慌_(tái)機(jī)器上測(cè)試3種方法(檢測(cè)chrome.exe):

方法耗時(shí)(秒)跨平臺(tái)信息詳細(xì)度
psutil0.02?★★★★★
os.system0.15?★★☆☆☆
subprocess0.12?★★★★☆

顯然,psutil是綜合最優(yōu)解!它不僅快,還能獲取進(jìn)程的CPU、內(nèi)存等詳細(xì)信息。如果你經(jīng)常需要做系統(tǒng)監(jiān)控,這個(gè)庫(kù)絕對(duì)要掌握。

六、實(shí)際應(yīng)用案例

案例1:防止腳本重復(fù)運(yùn)行

import psutil
import sys

current_pid = os.getpid()
for proc in psutil.process_iter(['pid', 'name']):
    if proc.info['name'] == 'python.exe' and proc.info['pid'] != current_pid:
        print("已有Python進(jìn)程在運(yùn)行!")
        sys.exit()

案例2:監(jiān)控服務(wù)自動(dòng)重啟

import time

while True:
    if not is_process_running('nginx.exe'):
        os.system('start nginx')  # Windows啟動(dòng)命令
        print("檢測(cè)到Nginx崩潰,已重啟!")
    time.sleep(60)  # 每分鐘檢查一次

七、常見(jiàn)問(wèn)題解答

Q:為什么找不到剛啟動(dòng)的進(jìn)程?

A:進(jìn)程可能需要幾毫秒才能注冊(cè)到系統(tǒng),建議檢測(cè)時(shí)加短暫延遲。

Q:如何匹配帶參數(shù)的進(jìn)程?

# 用psutil的cmdline屬性
[p.cmdline() for p in psutil.process_iter() if 'python' in p.name()]

Q:檢測(cè)到進(jìn)程后能做什么?

  • 結(jié)束進(jìn)程:process.terminate()
  • 獲取資源占用:process.cpu_percent()
  • 分析子進(jìn)程:process.children()

八、完整代碼模板

import psutil

class ProcessMonitor:
    @staticmethod
    def is_running(name):
        """檢查進(jìn)程是否存在"""
        return name in (p.name() for p in psutil.process_iter(['name']))
    
    @staticmethod
    def kill_process(name):
        """結(jié)束指定進(jìn)程"""
        for proc in psutil.process_iter(['name']):
            if proc.info['name'] == name:
                proc.kill()
                return True
        return False

???????# 使用示例
if ProcessMonitor.is_running('notepad.exe'):
    print("發(fā)現(xiàn)記事本進(jìn)程")
    ProcessMonitor.kill_process('notepad.exe')

九、總結(jié)

判斷進(jìn)程是否存在看似簡(jiǎn)單,但實(shí)際要考慮:

  • 跨平臺(tái)兼容性:Windows和Linux命令完全不同
  • 性能要求:頻繁檢測(cè)時(shí)需要高效方法
  • 擴(kuò)展需求:是否要獲取進(jìn)程詳細(xì)信息

推薦選擇:

  • 一般情況用psutil(簡(jiǎn)單可靠)
  • 特殊需求用subprocess(靈活控制)
  • 臨時(shí)測(cè)試用os.system(快速驗(yàn)證)

到此這篇關(guān)于Python如何精準(zhǔn)判斷某個(gè)進(jìn)程是否在運(yùn)行的文章就介紹到這了,更多相關(guān)Python判斷進(jìn)程是否運(yùn)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Python中namedtuple的使用

    詳解Python中namedtuple的使用

    這篇文章主要介紹了Python中namedtuple的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python如何把嵌套列表轉(zhuǎn)變成普通列表

    python如何把嵌套列表轉(zhuǎn)變成普通列表

    這篇文章主要為大家詳細(xì)介紹了python如何把嵌套列表轉(zhuǎn)變成普通列表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python簡(jiǎn)單實(shí)現(xiàn)音頻數(shù)據(jù)壓縮與解壓

    Python簡(jiǎn)單實(shí)現(xiàn)音頻數(shù)據(jù)壓縮與解壓

    在音頻數(shù)據(jù)處理中,壓縮算法是降低存儲(chǔ)成本和傳輸效率的關(guān)鍵技術(shù),本文將通過(guò)一個(gè)簡(jiǎn)單的音頻數(shù)據(jù)壓縮與解壓算法示例,探討如何利用Python實(shí)現(xiàn)這一目標(biāo),有需要的可以了解下
    2025-06-06
  • PyMongo 查詢數(shù)據(jù)的實(shí)現(xiàn)

    PyMongo 查詢數(shù)據(jù)的實(shí)現(xiàn)

    本文主要介紹了PyMongo 查詢數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • python單例模式實(shí)例分析

    python單例模式實(shí)例分析

    這篇文章主要介紹了python單例模式,實(shí)例分析了單例模式的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python計(jì)算字符寬度的方法

    Python計(jì)算字符寬度的方法

    這篇文章主要介紹了Python計(jì)算字符寬度的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python針對(duì)字符寬度的計(jì)算方法,需要的朋友可以參考下
    2016-06-06
  • Python循環(huán)控制詳解

    Python循環(huán)控制詳解

    本文介紹了Python編程語(yǔ)言中關(guān)于for循環(huán)和if條件控制的一些基本使用,包含了單層循環(huán)的退出機(jī)制和多層循環(huán)的退出機(jī)制,使得我們?cè)跐M足特定條件時(shí),可以直接結(jié)束多層循環(huán),需要的朋友可以參考下
    2024-07-07
  • PyCharm2018 安裝及破解方法實(shí)現(xiàn)步驟

    PyCharm2018 安裝及破解方法實(shí)現(xiàn)步驟

    這篇文章主要介紹了PyCharm2018 安裝及破解方法實(shí)現(xiàn)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • python算法測(cè)試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟

    python算法測(cè)試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟

    我們?cè)谶M(jìn)行算法評(píng)估是通常會(huì)針對(duì)每個(gè)樣本的算法處理結(jié)果進(jìn)行統(tǒng)計(jì),例如每個(gè)樣本正確預(yù)測(cè)數(shù)量、漏檢數(shù)量和誤檢數(shù)量、精度等,本文小編將給大家介紹python算法測(cè)試結(jié)果自動(dòng)保存到excel表格的實(shí)現(xiàn)步驟,感興趣的朋友可以參考下
    2023-12-12
  • 深入理解Python變量與常量

    深入理解Python變量與常量

    下面小編就為大家?guī)?lái)一篇深入理解Python變量與常量。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06

最新評(píng)論

静安区| 郴州市| 正镶白旗| 曲阜市| 乌苏市| 郸城县| 衡水市| 东至县| 洱源县| 山阴县| 宁安市| 沙田区| 汾西县| 高雄县| 曲麻莱县| 塔河县| 诏安县| 忻城县| 乡宁县| 安丘市| 高唐县| 廊坊市| 新乡市| 仙居县| 阿拉尔市| 理塘县| 青神县| 南开区| 综艺| 万安县| 千阳县| 鄱阳县| 都兰县| 获嘉县| 柏乡县| 张家港市| 娄烦县| 阳泉市| 郎溪县| 揭阳市| 鄂州市|