(interval=None, percpu=False)
Same as cpu_percent() but provides utilization percentages
    for each specific CPU time as is returned by cpu_times().
    For instance, on Linux we'll get:

      >>> cpu_times_percent()
      cpupercent(user=4.8, nice=0.0, system=4.8, idle=90.5, iowait=0.0,
                 irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
      >>>

    interval and percpu arguments have the same meaning as in
    cpu_percent().
Same as cpu_percent() but provides utilization percentages
    for each specific CPU time as is returned by cpu_times().
    For instance, on Linux we'll get:
Same as cpu_percent () but provides utilization percentages for each specific CPU time as is returned by cpu_times () . For instance on Linux we ll get :
def cpu_times_percent(interval=None, percpu=False):
    """Same as cpu_percent() but provides utilization percentages
    for each specific CPU time as is returned by cpu_times().
    For instance, on Linux we'll get:

      >>> cpu_times_percent()
      cpupercent(user=4.8, nice=0.0, system=4.8, idle=90.5, iowait=0.0,
                 irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
      >>>

    interval and percpu arguments have the same meaning as in
    cpu_percent().
    """
    global _last_cpu_times_2
    global _last_per_cpu_times_2
    blocking = interval is not None and interval > 0.0

    def calculate(t1, t2):
        nums = []
        all_delta = sum(t2) - sum(t1)
        for field in t1._fields:
            field_delta = getattr(t2, field) - getattr(t1, field)
            try:
                field_perc = (100 * field_delta) / all_delta
            except ZeroDivisionError:
                field_perc = 0.0
            field_perc = round(field_perc, 1)
            # CPU times are always supposed to increase over time
            # or at least remain the same and that's because time
            # cannot go backwards.
            # Surprisingly sometimes this might not be the case (at
            # least on Windows and Linux), see:
            # https://github.com/giampaolo/psutil/issues/392
            # https://github.com/giampaolo/psutil/issues/645
            # I really don't know what to do about that except
            # forcing the value to 0 or 100.
            if field_perc > 100.0:
                field_perc = 100.0
            # `<=` because `-0.0 == 0.0` evaluates to True
            elif field_perc <= 0.0:
                field_perc = 0.0
            nums.append(field_perc)
        return _psplatform.scputimes(*nums)

    # system-wide usage
    if not percpu:
        if blocking:
            t1 = cpu_times()
            time.sleep(interval)
        else:
            t1 = _last_cpu_times_2
        _last_cpu_times_2 = cpu_times()
        return calculate(t1, _last_cpu_times_2)
    # per-cpu usage
    else:
        ret = []
        if blocking:
            tot1 = cpu_times(percpu=True)
            time.sleep(interval)
        else:
            tot1 = _last_per_cpu_times_2
        _last_per_cpu_times_2 = cpu_times(percpu=True)
        for t1, t2 in zip(tot1, _last_per_cpu_times_2):
            ret.append(calculate(t1, t2))
        return ret
def cpu_times_percent ( interval = None , percpu = False ) : global _last_cpu_times_2 global _last_per_cpu_times_2 blocking = interval is not None and interval > 0.0 def calculate ( t1 , t2 ) : nums = [ ] all_delta = sum ( t2 ) - sum ( t1 ) for field in t1 . _fields : field_delta = getattr ( t2 , field ) - getattr ( t1 , field ) try : field_perc = ( 100 * field_delta ) / all_delta except ZeroDivisionError : field_perc = 0.0 field_perc = round ( field_perc , 1 ) # CPU times are always supposed to increase over time # or at least remain the same and that's because time # cannot go backwards. # Surprisingly sometimes this might not be the case (at # least on Windows and Linux), see: # https://github.com/giampaolo/psutil/issues/392 # https://github.com/giampaolo/psutil/issues/645 # I really don't know what to do about that except # forcing the value to 0 or 100. if field_perc > 100.0 : field_perc = 100.0 # `<=` because `-0.0 == 0.0` evaluates to True elif field_perc <= 0.0 : field_perc = 0.0 nums . append ( field_perc ) return _psplatform . scputimes ( * nums ) # system-wide usage if not percpu : if blocking : t1 = cpu_times ( ) time . sleep ( interval ) else : t1 = _last_cpu_times_2 _last_cpu_times_2 = cpu_times ( ) return calculate ( t1 , _last_cpu_times_2 ) # per-cpu usage else : ret = [ ] if blocking : tot1 = cpu_times ( percpu = True ) time . sleep ( interval ) else : tot1 = _last_per_cpu_times_2 _last_per_cpu_times_2 = cpu_times ( percpu = True ) for t1 , t2 in zip ( tot1 , _last_per_cpu_times_2 ) : ret . append ( calculate ( t1 , t2 ) ) return ret