当前位置: 首页 > 面试题库 >

如何在Win和MAC上使用Python检测进程是否正在运行

章嘉致
2023-03-14
问题内容

我正在尝试找到一种方法来检测进程是否在Windows Task Manager for Windows OS和Macintosh Activity
Monitor for Mac OS中使用Python运行

有人可以帮我提供代码吗?


问题答案:

psutil是一个跨平台的库,可检索有关正在运行的进程和系统利用率的信息。

import psutil

pythons_psutil = []
for p in psutil.process_iter():
    try:
        if p.name() == 'python.exe':
            pythons_psutil.append(p)
    except psutil.Error:
        pass



>>> pythons_psutil
[<psutil.Process(pid=16988, name='python.exe') at 25793424>]

>>> print(*sorted(pythons_psutil[0].as_dict()), sep='\n')
cmdline
connections
cpu_affinity
cpu_percent
cpu_times
create_time
cwd
exe
io_counters
ionice
memory_info
memory_info_ex
memory_maps
memory_percent
name
nice
num_ctx_switches
num_handles
num_threads
open_files
pid
ppid
status
threads
username

>>> pythons_psutil[0].memory_info()
pmem(rss=12304384, vms=8912896)

在现有的Windows Python中,您可以使用subprocesscsv解析以下输出tasklist.exe

import subprocess
import csv

p_tasklist = subprocess.Popen('tasklist.exe /fo csv',
                              stdout=subprocess.PIPE,
                              universal_newlines=True)

pythons_tasklist = []
for p in csv.DictReader(p_tasklist.stdout):
    if p['Image Name'] == 'python.exe':
        pythons_tasklist.append(p)



>>> print(*sorted(pythons_tasklist[0]), sep='\n')
Image Name
Mem Usage
PID
Session Name
Session#

>>> pythons_tasklist[0]['Mem Usage']
'11,876 K'


 类似资料:
  • 问题内容: 我发现的唯一 好 方法是: (资料来源) 但这可靠吗?它适用于每个流程和每个发行版吗? 问题答案: 毕竟,Mark的答案就是解决之道,这就是/ proc文件系统在那里的原因。对于一些复制/粘贴的东西:

  • 问题内容: 标准方法如下: 在这种情况下,如果跟踪当前进程(例如,使用gdb运行或附加到该进程),则ptrace返回错误。 但这有一个严重的问题:如果调用成功返回,则gdb稍后可能不会附加到它。这是一个问题,因为我没有尝试实现反调试的东西。我的目的是在满足条件(即断言失败)并且gdb正在运行时发出“ int 3”(否则,我会得到SIGTRAP来停止应用程序)。 禁用SIGTRAP并每次发出’int

  • 我正在尝试创建一个bash实用程序脚本来检查docker守护程序是否在我的服务器中运行。除了运行这样的代码之外,有没有更好的方法来检查docker守护程序是否在我的服务器中运行? 我想创建一个bash shell脚本来检查我的docker守护进程是否正在运行。如果它正在运行,那么什么也不做,但是如果它没有运行,那么就启动docker守护进程。 我的伪代码大概是这样的。我正在考虑解析我的ps -ef

  • 问题内容: 我正在使用Celery管理异步任务。但是,有时候,芹菜加工过程会停止,这不会导致任何任务被执行。我希望能够检查芹菜的状态,并确保一切正常,如果我发现任何问题,请向用户显示错误消息。从Celery Worker文档中看来,我可能可以使用ping或inspect进行此操作,但是ping感觉很笨拙,并且不清楚要使用的检查方式是否确切(如果inspect()。registered()为空?)。

  • 问题内容: 我对此有一些奇怪的问题。 我们正在使用Xvfb虚拟桌面管理器,并希望在继续之前确保其正在运行。使用纯外壳,我可以轻松地做到这一点: 这正是我所需要的,只有一行包含有关Xvfb proc的信息。接下来,我要将其合并到我的Java程序中并解析结果并存储正在运行的Xvfb进程的PID。所以我正在尝试: 奇怪的是,如果我使用“ ps -ef”,则在运行我的应用程序时,会得到大量的进程转储到控制

  • 如何检查JavaSDK是否安装在Mac上? 有命令行吗?