我正在测试为某些计算机检查而制作的“简单” python程序。我正在使用wmi模块来检索信息。但是,用于计数运行进程的简单计数线程大约需要12到13秒。正在运行的进程数约为300
我想知道我是否缺少什么,因为我对此运行的速度感到有些惊讶。
当按下一个按钮时,会启动多个线程,但是大多数线程会立即返回数据,但是这些线程不会循环,例如流程清单。
启动我使用的线程:
newObject = countProcess()
newObject.start()
类(线程)看起来像:
class countProcess(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
my_object = dict(status='Running', result='')
wx.CallAfter(pub.sendMessage, 'testListener', message=2,arg2=my_object)
pythoncom.CoInitialize()
d = wmi.WMI(find_classes=False)
count = 0
for process in d.Win32_Process():
count +=1
my_object = dict(status='idle', result=count)
wx.CallAfter(pub.sendMessage, 'testListener', message=2,arg2=my_object)
#print (count)
del d
我是不是做错了什么,还是在WMI进程中循环很慢,我必须接受这一点?
提前感谢!
好吧,我找到了一种方法来加速很多...通过仅选择一个字段名称,现在只需4秒,而不是12到13秒!
更改中:
for process in d.Win32_Process():
to
for process in d.Win32_Process(["Name"]):
没有把戏!我不知道这会产生如此大的影响。欢迎进一步加快速度的想法!