【问题标题】:Checking if program is running programmatically检查程序是否以编程方式运行
【发布时间】:2016-06-07 12:07:37
【问题描述】:

我想知道如何检查程序是否正在使用 python 运行,如果不运行它。我有两个 python 脚本,一个是监视另一个脚本的 GUI。所以基本上如果第二个脚本由于某种原因崩溃,我希望它重新开始。

n.b.我在 Windows 上使用python 3.4.2

【问题讨论】:

标签: python windows process


【解决方案1】:

模块 psutil 可以帮助您。要列出所有正在运行的进程,请使用:

import psutil

print(psutil.pids()) # Print all pids

要访问进程信息,请使用:

p = psutil.Process(1245)  # The pid of desired process
print(p.name()) # If the name is "python.exe" is called by python
print(p.cmdline()) # Is the command line this process has been called with

如果你在for上使用psutil.pids(),你可以验证所有这个过程是否使用python,比如:

for pid in psutil.pids():
    p = psutil.Process(pid)
    if p.name() == "python.exe":
        print("Called By Python:"+ str(p.cmdline())

psutil 的文档位于:https://pypi.python.org/pypi/psutil

编辑 1

假设脚本名称为Pinger.py,则可以使用该函数

def verification():
    for pid in psutil.pids():
        p = psutil.Process(pid)
        if p.name() == "python.exe" and len(p.cmdline()) > 1 and "Pinger.py" in p.cmdline()[1]:
            print ("running")

【讨论】:

  • 我认为它不是默认的python库之一,还是我错了?如果是这样我找到了这个库pypi.python.org/pypi/psutil,你这个是对的吗?
  • 是的,你说得对,这个库不是默认库,但你的链接是正确的,是同一个模块
  • 另一个问题,我看到这在所有python脚本中都有反应作为python.exe,但我想检查单独的脚本而不是具有psutil的主要脚本
  • p.cmdline() 行返回一个类似 ["python.exe", "your_script.py"] 的列表,使用它可以检查列表中的第二个位置。
  • p.cmdline()[1] 让我有 3 个正在运行的程序:running.py;平格尔.Py;运行.py;并且它没有返回应有的 true
猜你喜欢
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
相关资源
最近更新 更多