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

跨平台通过python中的进程名称获取PID的方法

禄俊逸
2023-03-14
问题内容

几个具有相同名称的进程正在主机上运行。使用 pythonjython 按名称获取那些进程的PID的跨平台方法是什么?

  1. 我想要类似pidof但在python中的东西。(我没有pidof。)
  2. 我无法解析,/proc因为它可能不可用(在HP-UX上)。
  3. 我不想运行os.popen('ps')并解析输出,因为我认为它很丑陋(不同操作系统中的字段顺序可能不同)。
  4. 目标平台是Solaris,HP-UX,也许还有其他平台。

问题答案:

您可以使用在Windows和UNIX上均可使用的psutil(https://github.com/giampaolo/psutil):

import psutil

PROCNAME = "python.exe"

for proc in psutil.process_iter():
    if proc.name() == PROCNAME:
        print(proc)

在我的机器上打印:

<psutil.Process(pid=3881, name='python.exe') at 140192133873040>

编辑2017-04-27-这是一个更高级的实用程序功能,可根据进程的name(),cmdline()和exe()检查名称:

import os
import psutil

def find_procs_by_name(name):
    "Return a list of processes matching 'name'."
    assert name, name
    ls = []
    for p in psutil.process_iter():
        name_, exe, cmdline = "", "", []
        try:
            name_ = p.name()
            cmdline = p.cmdline()
            exe = p.exe()
        except (psutil.AccessDenied, psutil.ZombieProcess):
            pass
        except psutil.NoSuchProcess:
            continue
        if name == name_ or cmdline[0] == name or os.path.basename(exe) == name:
            ls.append(p)
    return ls


 类似资料:
  • 问题内容: 这应该很简单,但我只是没有看到。 如果我有一个进程ID,该如何使用它来获取有关该进程的信息,例如进程名称。 问题答案: 在Linux下,您可以读取proc文件系统。文件包含命令行。

  • 问题内容: 有什么办法可以在Python中按进程名称获取PID? 例如,我需要获得通过。 问题答案: 你可以使用进程的名字来的PID 通过subprocess.check_output: 将运行命令为, 如果返回码非零,则会引发CalledProcessError。 要处理多个条目并转换为整数: 在[21]中:get_pid(“ chrome”) 或者通过标记获取单个pid:

  • 问题内容: 我正在使用python的多处理模块来生成新进程 如下 : 我想获取iostat命令的pid或使用多处理模块执行的命令 当我执行时: 它给了我运行此命令的subshel​​l的pid。 任何帮助都是有价值的。 提前致谢 问题答案: 你可以使用psutil:

  • 问题内容: 有时,当我尝试启动Firefox时,它会显示“ Firefox进程已在运行”。所以我必须这样做: 我想要的是一个可以为我完成所有任务的命令。它会在进程列表中使用一个输入字符串并将其(或其他内容)放入其中,并杀死输出中的所有进程: 我尝试在PHP中执行此操作,但似乎只显示已在PHP脚本本身中执行过的进程(因此,它显示的唯一进程是其自身。) 问题答案: 详细信息:http : //linu

  • 问题内容: 如何从他的pid获取进程名称?例如,我执行cat file1.txt,但是我想弄清楚该cat命令及其参数,因为它在系统中的pid是。是否有确定它的结构或类似的东西?任何的想法? 问题答案: 没有任何通用方法可以执行此unix。 每个操作系统都有不同的处理方式,有些很难。您提到了Linux。对于Linux,该信息位于/ proc文件系统中。 要获取进程ID 9999的命令行,请阅读文件。

  • 问题内容: 我有一个Python程序,它执行耗时的计算。由于它使用高CPU,并且我希望系统保持响应状态,因此我希望程序将其优先级更改为低于正常值。 我发现了这一点: 在Windows中设置进程优先级- ActiveState 但我正在寻找一种跨平台的解决方案。 问题答案: 这是我用来将进程设置为低于正常优先级的解决方案: 在Windows和Linux上的Python 2.6上进行了测试。