正在执行的程序称为进程。进程可以是当前操作系统上运行的应用程序,也可以是与操作系统相关的应用程序。如果一个应用程序与操作系统相关,它首先会创建一个进程来执行自己。
其他应用程序依赖操作系统服务来执行。大多数应用程序是操作系统服务以及维护操作系统、软件和硬件的后台应用程序。
在 python 中,我们有不同的方法来检查应用程序是否打开。让我们一一详细了解它们。
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 模块,我们可以从当前的 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
Windows Management Instrumentation 是 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
以上是如何在Python中检查应用程序是否打开?的详细内容。更多信息请关注PHP中文网其他相关文章!