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数量时必须有百分比