nschloe / tiptop

:desktop_computer: Command-line system monitoring
MIT License
1.77k stars 70 forks source link

CallbackError #85

Open JintaoLee-Roger opened 2 years ago

JintaoLee-Roger commented 2 years ago

After installing by using the command "pip install tiptop", I ran the command "tiptop" and got the desired result. However, the result is just kept 1s, then I got the following errors:

╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│                                                                              │
│ /home/roger/miniconda3/lib/python3.8/site-packages/tiptop/_cpu.py:210 in     │
│ collect_data                                                                 │
│                                                                              │
│   207 │                                                                      │
│   208 │   def collect_data(self):                                            │
│   209 │   │   # CPU loads                                                    │
│ ❱ 210 │   │   self.cpu_total_stream.add_value(psutil.cpu_percent())          │
│   211 │   │   #                                                              │
│   212 │   │   load_per_thread = psutil.cpu_percent(percpu=True)              │
│   213 │   │   assert isinstance(load_per_thread, list)                       │
│                                                                              │
│ ╭───────── locals ─────────╮                                                 │
│ │ self = CPU(name='CPU#1') │                                                 │
│ ╰──────────────────────────╯                                                 │
│ /home/roger/miniconda3/lib/python3.8/site-packages/tiptop/braille_stream.py: │
│ 87 in add_value                                                              │
│                                                                              │
│    84 │   │                                                                  │
│    85 │   │   # update stream                                                │
│    86 │   │   for k, char in enumerate(chars):                               │
│ ❱  87 │   │   │   g[k] = g[k][1:] + char                                     │
│    88 │   │                                                                  │
│    89 │   │   self.values = self.values[1:] + [value]                        │
│    90 │   │   self._last_blocks = blocks                                     │
│                                                                              │
│ ╭──────────────────────────────── locals ─────────────────────────────────╮  │
│ │ blocks = [1, 0, 0, 0]                                                   │  │
│ │   char = ' '                                                            │  │
│ │  chars = [' ', ' ', ' ', '⣀']                                           │  │
│ │      g = []                                                             │  │
│ │      k = 0                                                              │  │
│ │   self = <tiptop.braille_stream.BrailleStream object at 0x7f9d3a4a1ca0> │  │
│ │  value = 3.3                                                            │  │
│ ╰─────────────────────────────────────────────────────────────────────────╯  │
╰──────────────────────────────────────────────────────────────────────────────╯
IndexError: list index out of range

During handling of the above exception, another exception occurred:

╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│                                                                              │
│ /home/roger/miniconda3/lib/python3.8/site-packages/textual/message_pump.py:3 │
│ 27 in on_timer                                                               │
│                                                                              │
│   324 │   │   │   try:                                                       │
│   325 │   │   │   │   await invoke(event.callback)                           │
│   326 │   │   │   except Exception as error:                                 │
│ ❱ 327 │   │   │   │   raise CallbackError(                                   │
│   328 │   │   │   │   │   f"unable to run callback {event.callback!r}; {erro │
│   329 │   │   │   │   )                                                      │
│   330                                                                        │
│                                                                              │
│ ╭───────────── locals ──────────────╮                                        │
│ │ event = Timer('Timer#1', count=0) │                                        │
│ │  self = CPU(name='CPU#1')         │                                        │
│ ╰───────────────────────────────────╯                                        │
╰──────────────────────────────────────────────────────────────────────────────╯
CallbackError: unable to run callback <bound method CPU.collect_data of 
CPU(name='CPU#1')>; list index out of range
JintaoLee-Roger commented 2 years ago

My OS information: Ubuntu20.04, python=3.8.5, pip=20.2.4

Hope to get a reply. Thanks!

nschloe commented 2 years ago

What does

import psutil

print(psutil.cpu_percent())
print(psutil.cpu_percent(percpu=True))

give on your machine?

JintaoLee-Roger commented 2 years ago

I got this:

>>> import psutil
>>> print(psutil.cpu_percent())
3.0
>>> print(psutil.cpu_percent(percpu=True))
[0.6, 0.1, 8.9, 3.1, 8.8, 2.5, 6.9, 5.8, 4.8, 0.9, 0.7, 0.9, 0.3, 2.0, 3.1, 0.2, 4.1, 3.2, 2.6, 2.2, 1.9, 2.2, 2.4, 2.3, 8.3, 6.5, 12.3, 2.5, 8.9, 0.4, 0.4, 0.1, 0.9, 0.5, 0.4, 6.7, 0.4, 0.0, 0.0, 0.0]
nschloe commented 2 years ago

Looks alright. Not sure where it could be going wrong then.