使用Python按名稱結束程序


簡介

在程式設計領域,程序是管理系統資源的重要組成部分。如果某個程序行為異常或佔用過多資源,你可能需要偶爾終止它。對於這類系統級操作,Python 提供了豐富的工具。在這篇文章中,我們將向你展示如何使用Python按名稱結束程序。

Python和系統程序

Python 憑藉其豐富的庫和模組,是一種非常靈活的語言,它超越了簡單的指令碼編寫或Web程式設計。透過os和psutil等庫,你可以與系統級功能(如程序管理)進行互動。

使用Psutil庫

我們將使用“程序和系統工具”(psutil)庫來控制系統程序。這是一個跨平臺庫,用於獲取程序和系統資訊。如果你還沒有安裝psutil,可以使用pip安裝它 

pip install psutil

按名稱查詢程序

在終止程序之前,必須先找到它。使用psutil.process_iter()和psutil.Process.name(),我們可以按名稱找到所有程序例項 

import psutil

def get_processes_by_name(name):
   """Return a list of processes matching 'name'."""
   matching_processes = [proc for proc in psutil.process_iter(['name']) if proc.info['name'] == name]
   return matching_processes

此函式將返回具有指定名稱的程序例項列表。

按名稱結束程序

既然我們可以按名稱查詢程序,現在就可以編寫一個函式來終止這些程序了。在遍歷程序列表時,我們將使用kill()方法 

def kill_processes(processes):
   """Attempt to kill all 'processes'."""
   for proc in processes:
      try:
         proc.kill()
      except psutil.NoSuchProcess:
         print(f"No such process: {proc.pid}")
      except psutil.AccessDenied:
         print(f"Access denied to {proc.pid}")

在這個方法中,我們捕獲了可能在程序結束後丟擲的NoSuchProcess和AccessDenied等異常。

整合所有內容

可以使用這些操作來編寫一個結束所有程序例項的指令碼 

import psutil

def get_processes_by_name(name):
   """Return a list of processes matching 'name'."""
   matching_processes = [proc for proc in psutil.process_iter(['name']) if proc.info['name'] == name]
   return matching_processes

def kill_processes(processes):
   """Attempt to kill all 'processes'."""
   for proc in processes:
      try:
         proc.kill()
      except psutil.NoSuchProcess:
         print(f"No such process: {proc.pid}")
      except psutil.AccessDenied:
         print(f"Access denied to {proc.pid}")

process_name = "process_to_kill"
processes_to_kill = get_processes_by_name(process_name)
kill_processes(processes_to_kill)

此指令碼將查詢並結束所有process_to_kill例項。

結論

Python 豐富的標準庫和第三方模組使得高效的系統互動和程序操作成為可能。我們可以使用psutil庫輕鬆管理系統程序,包括按名稱結束它們。由於具有此功能,Python 在系統管理任務和指令碼中表現出色,進一步鞏固了其作為靈活而強大的程式語言的聲譽。

更新於:2023年7月17日

1K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告