如何知道windows中的进程是不是在python中运行

Posted

技术标签:

【中文标题】如何知道windows中的进程是不是在python中运行【英文标题】:How to know whether a process in windows is running or not in python如何知道windows中的进程是否在python中运行 【发布时间】:2014-03-12 12:43:18 【问题描述】:

我使用的是 python 2.7 和 windows 7 64 位。我想知道一个进程(python.exe)是否在任务管理器/进程中运行。 我已经通过http://www.videntity.com/2010/05/check-to-make-sure-a-process-is-running-and-restart-it-if-its-not-a-recipe-in-python/,但它不适用于 Windows。

【问题讨论】:

【参考方案1】:

您链接的页面使用 os.popen()(official docs here)

在windows中,你应该使用“tasklist”作为os.popen()的arg,而不是“ps -Af”

例如

>>> import os
>>> tmp = os.popen("tasklist").read()  # it would return a str type
>>> "python.exe" in tmp
True

【讨论】:

这是否适用于 Windows 7、vista、XP 和 32 位机器 好吧,只要任务列表在 cmd 中工作,它就会工作,所以我猜是的【参考方案2】:

这是我使用win32 的方法:

from win32com.client import GetObject
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process')

if "python.exe" in [process.Properties_('Name').Value for process in processes]:
    #do the thing

【讨论】:

这是否适用于 Windows 7、vista、XP 和 32 位机器 这肯定适用于任何 Windows 7 机器(32 位或 64 位)。它应该适用于早期版本,但老实说,我不确定兼容性有多远 那么 windows 8 和 vista 呢 @imp 应该是相同的交易,我希望它能够工作,但我还没有进行研究以绝对确定 适用于我在 Windows 7、32 和 64 位系统中的测试【参考方案3】:

您应该能够在任务管理器的进程选项卡的后台进程中看到您的进程,名称为 pythonw.exe(64 位)

【讨论】:

以上是关于如何知道windows中的进程是不是在python中运行的主要内容,如果未能解决你的问题,请参考以下文章

如何知道进程是不是是应用程序 - Windows

如何使用 C# 中的 Windows 服务跟踪给定进程是不是引发异常

如何在 Windows 上的 python 中启动一个进程?

python3 在windows下如何判断文件是不是被打开?

什么相当于使用 python 的 windows 中的 sigusr1-2 信号?

使用 python 子进程检查 pip 是不是安装在 Windows 上