获得所有流程ID
我正在使用Python 2.7和Windows。我想在给出过程名称时找出活动ID的列表。
import time
import win32pdh
def GetProcessID( name ) :
object = "Process"
items, instances = win32pdh.EnumObjectItems( None, None, object,
win32pdh.PERF_DETAIL_WIZARD )
val = None
if name in instances :
hq = win32pdh.OpenQuery()
hcs = [ ]
item = "ID Process"
path = win32pdh.MakeCounterPath( ( None, object, name, None, 0, item ) )
hcs.append( win32pdh.AddCounter( hq, path ) )
win32pdh.CollectQueryData( hq )
time.sleep( 0.01 )
win32pdh.CollectQueryData( hq )
for hc in hcs:
type, val = win32pdh.GetFormattedCounterValue( hc, win32pdh.PDH_FMT_LONG )
win32pdh.RemoveCounter( hc )
win32pdh.CloseQuery( hq )
return val
hh=GetProcessID("python")
在上面的代码中,即使在两个Python进程运行时,我也只有一个流程ID。我的查询是如何使用Python Process
您可以使用psutil获取此信息:
import psutil
NoNameAccesses = []
for p in psutil.process_iter():
try:
if p.name.startswith('python'):
print (p.name, p.pid)
except psutil._error.AccessDenied:
# Handle where the user does not have permission to get the name
NoNameAccesses.append(p.pid)
if len(NoNameAccesses) > 0:
print ("Warning: You don't have access to he following processes:")
print (NoNameAccesses)
归功于Bakuriu的评论
您可以尝试调用" taskelist"并处理输出。
例如,在任务列表输出中描述为答案