方案:我打开了多个Firefox浏览器。某个时候,我运行脚本以关闭所有已启动30分钟以上的firefox进程。
我正在Windows上执行此操作。 是否有可能从一个过程中获得生命?
PROCNAME = "firefox.exe"
# Shuts down all PROCNAME processes
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
proc.kill()
答案 0 :(得分:0)
我只是将psutil用作上面建议的Amandan。我使用的是PROCNAME“ Google Chrome”,因为它是我正在运行的浏览器,并且我可以使用以下方法获得流程创建时间。
我假设您可以从进程创建时间中减去当前时间,以获取浏览器已运行的时间。
import psutil
import datetime
PROCNAME = "Google Chrome"
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
p = psutil.Process(proc.ppid())
print(f"Creation time of {PROCNAME} process: ", datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S"))
答案 1 :(得分:0)
psutil是一个非常好的模块,可以检索所有系统进程的信息,并且它是跨平台的。
psutil 不提供有关进程已运行多长时间的信息,但是,它确实提供了进程创建时间,因此可以很容易地确定进程的运行时间。
import psutil
import time
PROCNAME = "firefox.exe"
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
etime = time.time() - proc.create_time()
print(etime)
if(etime > 1800): #30mintues or more running time
proc.kill()
答案 2 :(得分:0)
Windows 的另一种方式:
import os, time, datetime, threading
import subprocess, psutil, statistics
def perf_psutil(n=100):
liste = []
count = 0
ct = time.time()
while count < n:
count+=1
t0 = time.perf_counter_ns()
p = [proc.create_time() for proc in psutil.process_iter() if proc.name() == "explorer.exe"][0]
d = ct - p
t1 = time.perf_counter_ns()
liste.append(t1-t0)
print("Date in sec:",p)
print("Duration:",d)
print("Performance psutil :", statistics.mean(liste)/10**9)
def perf_wmic(n=100):
liste = []
count = 0
ct = datetime.datetime.now()
while count < n:
count+=1
t0 = time.perf_counter_ns()
p = [x.split(b'CreationDate=')[1] for x in subprocess.Popen('wmic PROCESS WHERE NAME="Explorer.exe" GET * /format:list <nul', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0].replace(b'\r\r\n',b',').split(b',') if x.startswith(b'CreationDate=')][0]
d = datetime.datetime.now()-datetime.datetime(int(p[:4]),int(p[4:6]),int(p[6:8]),int(p[8:10]),int(p[10:12]),int(p[12:14]),int(p[15:-4]))
t1 = time.perf_counter_ns()
liste.append(t1-t0)
print("Date :",p)
print("Duration:",d.total_seconds())
print("Performance wmic :", statistics.mean(liste)/10**9)
print('########## PSUTIL ##########')
perf_psutil(10)
print('############################')
print('########### WMIC ###########')
perf_wmic(10)
print('############################')
结果:
########## PSUTIL ##########
Date in sec: 1624790271.081833
Duration: 18625.84829068184
Performance psutil : 0.17050247
############################
########### WMIC ###########
Date : b'20210627123751.081832+120'
Duration: 18628.22999
Performance wmic : 0.06602881
############################