Python psutil进程cpu百分比大于100
所以,我创建了一个监控函数来监控基准测试的过程 这就是函数Python psutil进程cpu百分比大于100,python,python-3.x,multiprocessing,psutil,Python,Python 3.x,Multiprocessing,Psutil,所以,我创建了一个监控函数来监控基准测试的过程 这就是函数 def monitor(target): worker_process = mp.Process(target=target, args=(5, bounds, num_particles, max_iter, None)) worker_process.start() p = psutil.Process(worker_process.pid) cpu_percents = [] while w
def monitor(target):
worker_process = mp.Process(target=target, args=(5, bounds, num_particles, max_iter, None))
worker_process.start()
p = psutil.Process(worker_process.pid)
cpu_percents = []
while worker_process.is_alive():
test = p.cpu_percent()
if test != 0.0:
cpu_percents.append(test)
worker_process.join()
return cpu_percents
cpu_percents = monitor(target=GSO)
我得到了我正在监视的函数的cpu使用率,但是cpu百分比()/cpu数量大于100,我不明白发生了什么,有人能解释一下吗
来自psutil文档:
返回一个浮点数,表示进程CPU利用率的百分比,如果进程在不同CPU上运行多个线程,该百分比也可以大于100.0
我有一个类似的问题,cpu使用率在300%左右,这毫无意义。通过增加间隔时间解决了这个问题。以下是我如何做到这一点的示例:
import psutil
import pandas as pd
import time
import multiprocessing
def get_running_aps(interval=20):
df = pd.DataFrame(columns=['pid', 'name', 'username', 'status', 'cpu_percent'])
# this is t0 (start of interval)
for proc in psutil.process_iter(['pid', 'name', 'username', 'status', 'cpu_percent']):
pass
# interval time waiting
for i in range(interval):
print("#" * (interval - i))
time.sleep(1)
# measure a second time, now save the results
for proc in psutil.process_iter(['pid', 'name', 'username', 'status', 'cpu_percent']):
df = df.append(proc.info, ignore_index=True)
# divide by the number of cpu's
df.cpu_percent = df.cpu_percent/multiprocessing.cpu_count()
df = df.sort_values(['cpu_percent'], ascending=False)
return df
if __name__ == "__main__":
df = get_running_aps()
print(df.head())
是的,没错。但是cpu_百分比除以cpu数量时必须有百分比