gpt4 book ai didi

python - 如何使用python杀死资源消耗不变的Windows进程?

转载 作者:行者123 更新时间:2023-11-28 19:04:05 26 4
gpt4 key购买 nike

我有一个 python 脚本,用于测试我的 Windows 机器上是否正在运行任何 firefox 进程,然后杀死它们:

import os, subprocess
running_processes = subprocess.check_output('tasklist', shell = True)
if "firefox.exe" in running_processes:
os.system("TASKKILL /F /IM firefox.exe")

我只想杀死内存消耗和 CPU 使用率随时间保持不变(即在特定时间间隔内不改变)的 firefox 进程。

如何在 python 中终止内存和 CPU 使用率恒定的 Windows 进程?

最佳答案

我当前杀死陈旧的 Windows 进程的方法涉及一个函数,该函数为每个正在运行的进程返回一个元组(进程 PID/进程内存消耗)。

如果元组在两个连续的函数调用之间没有变化,我将通过 PID 终止进程。这种方法有一个局限性:需要提前知道(命名)要监视的进程。

import os, subprocess, csv, psutil, time
def get_task_memory(process_name):
running_processes = csv.DictReader( # Get list of running processes
subprocess.check_output(
\"tasklist /fo csv\").splitlines())
PID_list = []
memory_A = []
for task in running_processes: # Loop through running processes
if process_name in task.values():
PID = int(task.values()[2]) # Get process PID
consumption = task.values()[1] # Get memory usage of process with PID
PID_list.append(PID) # Create list of PIDs
memory_A.append(consumption) # Create list of memory usage
process_snapshot = zip(PID_list, memory_A) # Create list of PID:memory usage tuples
return process_snapshot # return tuple for every running process

在无限循环中,我连续调用此函数,中间有短暂的中断。如果任何特定于进程的元组在运行过程中是相同的,则相应进程的内存消耗没有改变——这个进程现在可以被 PID 杀死。

while True:  
process_name = "phantomjs.exe" # PName of process to be monitored
process_snapshot_A = get_task_memory(process_name) # function call 1
time.sleep(n) # Wait
process_snapshot_B = get_task_memory(process_name) # function call 2
stale_processes = [tuple for tuple in process_snapshot_A if tuple in process_snapshot_B]
if len(stale_processes) > 0: # Stale processes
print "stale process found - terminating"
for PID, memory in stale_processes:
stale_process = psutil.Process(PID) # Get PID
stale_process.kill() # Kill PID
else:
pass

关于python - 如何使用python杀死资源消耗不变的Windows进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com