如何检查进程是否在Python中运行?

时间:2017-12-10 12:09:00

标签: python python-3.6

我正在做一个阻止某些应用程序打开的程序。 但它使用了大量的CPU。 因为程序总是试图终止该应用程序。我希望这个程序使用更少的CPU。我怎么能这样做?

PS 我无法在2小时内达到此结果。

我的Python版本: 3.6.3

我不想要任何第三方模块。

我使用大量CPU的代码:

si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
while True:
    subprocess.call("taskkill /F /IM chrome.exe", startupinfo=si)
    subprocess.call("taskkill /F /IM opera.exe", startupinfo=si)
    subprocess.call("taskkill /F /IM iexplore.exe", startupinfo=si)
    subprocess.call("taskkill /F /IM firefox.exe", startupinfo=si)
    sleep(1)

2 个答案:

答案 0 :(得分:1)

如果你坚持没有第三方模块(并且我认为win32api在Windows上运行时应该附带Python),你至少可以将大部分工作抵消到使用Win32 API的系统试图通过Python做一切。以下是我的表现:

import subprocess
import time

# list of processes to auto-kill
kill_list = ["chrome.exe", "opera.exe", "iexplore.exe", "firefox.exe"]

# WMI command to search & destroy the processes
wmi_command = "wmic process where \"{}\" delete\r\n".format(
    " OR ".join("Name='{}'".format(e) for e in kill_list))

# run a single subprocess with Windows Command Prompt
proc = subprocess.Popen(["cmd.exe"], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
while True:
    proc.stdin.write(wmi_command.encode("ascii"))  # issue the WMI command to it
    proc.stdin.flush()  # flush the STDIN buffer
    time.sleep(1)  # let it breathe a little

在大多数情况下,您甚至都不会注意到这一点对性能的影响。

现在,为什么你首先需要这样一个东西是一个完全不同的主题 - 我认为这样的剧本没有现实世界的使用。

答案 1 :(得分:0)

也许使用psutil更快:

import psutil

for process in psutil.process_iter():
    if process.name() == 'myprocess':
        process.kill()