【问题标题】:Counting number of running processes with WMI python is slow使用 WMI python 计算正在运行的进程数很慢
【发布时间】:2020-05-12 22:20:14
【问题描述】:

我正在测试我为一些计算机检查而制作的“简单”python 程序。 我正在使用 wmi 模块来检索信息。但是,用于计算正在运行的进程的简单计数线程大约需要 12 到 13 秒。运行进程数在300左右

我想知道我是否遗漏了什么,因为我有点惊讶这个运行速度有多慢。

  • 操作系统:Windows 10 企业版
  • Python:3.8.2 32 位
  • wmi:1.5.1
  • wxpython: 4.1.0

当按下按钮时,会启动多个线程,但其中大多数会立即返回数据,但这些不会循环,例如进程列表。

启动我使用的线程:

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 进程太慢了,我必须接受这一点?

提前致谢!

【问题讨论】:

    标签: python python-3.x wxpython wmi


    【解决方案1】:

    好的,我找到了一种加快速度的方法... 通过只选择一个字段名称,现在只需 4 秒,而不是 12 到 13 秒!

    改变:

    for process in d.Win32_Process():
    

    for process in d.Win32_Process(["Name"]):
    

    成功了! 我不知道这会产生如此大的影响。 欢迎任何进一步加快速度的想法!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多