【问题标题】:How To Kill Process With Minimum Processor Consumption如何以最少的处理器消耗杀死进程
【发布时间】:2018-05-06 20:15:00
【问题描述】:

我正在寻找一个 python 脚本来杀死特定的正在运行的进程。我有一个脚本来获取所有当前正在运行的进程的列表。所以我做了一些修改,它的工作原理如下:

一个名为blackList 的列表存储了所有需要杀死的不需要的进程。该脚本遍历获取的进程名称并与黑名单的内容进行比较。如果匹配,则终止该进程。

代码:

import psutil

blackList = ["SkypeHost.exe", "Music.UI.exe", "SearchUI.exe", "Video.UI.exe", "backgroundTaskHost.exe"]

while True:
  for proc in psutil.process_iter():
    try:
        pinfo = proc.as_dict(attrs=['pid', 'name', 'username'])
    except psutil.NoSuchProcess:
        pass
    else:
        for i in blackList:
            if pinfo["name"] == i:
                proc.kill()

脚本运行良好,但占用了我的大部分处理器。

不运行脚本

Without running the script

脚本运行时

While Script is running

有没有办法减少这种消耗?为什么要消耗这么多处理器?

我的处理器:Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz

【问题讨论】:

  • 您正在运行一个不受约束的循环,它将尽可能快地运行。您可以选择在while 循环中使用time.sleep(s) 来减慢它的速度,这将大大降低其CPU 使用率。或者,寻找其他一些基于事件的方法。
  • 我想,你想把这个进程作为一个守护进程生成?
  • 你正在运行一个未缩进的循环,我修复了它:)

标签: python kill-process psutil


【解决方案1】:
import time

并在你的循环中抛出一个time.sleep(some small time frame)。

不间断地执行while True 会破坏您的CPU。

【讨论】:

  • 延迟1秒减少消耗。谢谢
猜你喜欢
  • 2023-03-27
  • 2018-08-05
  • 2019-06-14
  • 2017-10-02
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多