'Update and/or return the per CPU list using the psutil library.'

def __get_percpu(self):

    if self.timer_percpu.finished():
        self.percpu_percent = []
        for (cpu_number, cputimes) in enumerate(psutil.cpu_times_percent(interval=0.0, percpu=True)):
            cpu = {'key': self.get_key(), 'cpu_number': cpu_number, 'total': round((100 - cputimes.idle), 1), 'user': cputimes.user, 'system': cputimes.system, 'idle': cputimes.idle}
            if hasattr(cputimes, 'nice'):
                cpu['nice'] = cputimes.nice
            if hasattr(cputimes, 'iowait'):
                cpu['iowait'] = cputimes.iowait
            if hasattr(cputimes, 'irq'):
                cpu['irq'] = cputimes.irq
            if hasattr(cputimes, 'softirq'):
                cpu['softirq'] = cputimes.softirq
            if hasattr(cputimes, 'steal'):
                cpu['steal'] = cputimes.steal
            if hasattr(cputimes, 'guest'):
                cpu['guest'] = cputimes.guest
            if hasattr(cputimes, 'guest_nice'):
                cpu['guest_nice'] = cputimes.guest_nice
            self.percpu_percent.append(cpu)
            self.timer_percpu = Timer(self.cached_time)
    return self.percpu_percent
