如何在 Python 中檢查應用程式是否已開啟?
正在執行的程式稱為程序。程序可以是當前作業系統上執行的應用程式,也可以是與作業系統相關的應用程式。如果應用程式與作業系統相關,則它首先會建立一個程序來執行自身。
其他應用程式依賴於作業系統服務來執行。大多數應用程式都是 OS 服務以及維護作業系統、軟體和硬體的後臺應用程式。
在 Python 中,我們有多種方法可以檢查應用程式是否已開啟。讓我們詳細瞭解一下它們。
使用 psutil.process_iter() 函式
psutil 是 Python 中的一個模組,它為使用者提供了一個介面來檢索正在執行的程序的資訊和系統利用率。它可用於主要的操 作系統,如 Linux、Windows、macOS、Solaris 和 AIX 等,以及 API 平臺。
psutil 模組的 process_iter() 函式幫助我們檢索有關正在執行的程序的資訊,例如程序名稱、程序 ID、CPU 使用率、記憶體使用率等。它還提供有關係統利用率的資訊,如磁碟使用率、網路使用率等。
示例
在此示例中,我們試圖找出名為“Chrome.exe”的程序當前是否正在我們的系統中執行。
import psutil
def check_if_process_running(process_name):
for process in psutil.process_iter(['name']):
if process.info['name'] == process_name:
return True
return False
check_if_process_running("Chrome.exe")
輸出
False
示例
這是 psutil 模組的 process_iter() 函式的另一個示例,它提供了程序的詳細資訊。
import psutil
processes = psutil.process_iter()
for process in processes:
print(f"Process name: {process.name()} | PID: {process.pid}")
cpu_percent = psutil.cpu_percent()
print(f"CPU usage: {cpu_percent}%")
memory_usage = psutil.virtual_memory()
print(f"Total memory: {memory_usage.total / 1024 / 1024:.2f} MB")
print(f"Available memory: {memory_usage.available / 1024 / 1024:.2f} MB")
print(f"Memory usage: {memory_usage.percent}%")
輸出
以下是 process_iter() 的輸出,它提供了有關應用程式的全部資訊。
Process name: chrome.exe | PID: 15964 Process name: chrome.exe | PID: 16876 CPU usage: 10.6% Total memory: 12152.65 MB Available memory: 5849.83 MB Memory usage: 51.9%
使用 subprocess 模組
subprocess 模組是檢查應用程式是否正在執行或已停止的另一種方法。使用 subprocess 模組,我們可以從當前的 Python 程式啟動一個新的應用程式。我們可以使用 check_output() 方法獲取程式或命令的輸出。
示例
在以下示例中,我們嘗試使用 check_output() 函式驗證應用程式是否已開啟:
import subprocess
def is_process_running(process_name):
cmd = 'tasklist /fi "imagename eq {}"'.format(process_name)
output = subprocess.check_output(cmd, shell=True).decode()
if process_name.lower() in output.lower():
return True
else:
return False
is_process_running("chrome.exe")
輸出
True
使用 wmi 模組
Windows Management Instrumentation (WMI) 是 Windows 作業系統中的一套工具,允許管理員管理遠端和本地計算機。
在 Python 中,我們有 wmi 模組,它可以幫助我們檢查應用程式是否正在執行。以下程式碼用於在 Python 環境中安裝 wmi。
pip install wmi
示例
在此示例中,我們將應用程式名稱作為輸入引數傳遞給 wmi 模組的 WMI() 函式,以檢索具有程序 ID 的應用程式的狀態。
import wmi
f = wmi.WMI()
for process in f.Win32_Process():
print(f"{process.ProcessId:>5} {process.Name}")
輸出
以下是 wmi 模組的 WMI() 函式的輸出。
0 System Idle Process
4 System
124 Registry
524 smss.exe
752 csrss.exe
868 csrss.exe
888 wininit.exe
940 services.exe
960 lsass.exe
320 winlogon.exe
980 svchost.exe
1048 fontdrvhost.exe
1056 fontdrvhost.exe
1144 WUDFHost.exe
1180 svchost.exe
1268 svchost.exe
1292 WUDFHost.exe
1396 svchost.exe
1404 svchost.exe
1412 svchost.exe
1528 svchost.exe
1640 dwm.exe
1660 svchost.exe
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP