diff options
Diffstat (limited to 'klippy/extras/statistics.py')
-rw-r--r-- | klippy/extras/statistics.py | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/klippy/extras/statistics.py b/klippy/extras/statistics.py index 90cd53f8..de7302e7 100644 --- a/klippy/extras/statistics.py +++ b/klippy/extras/statistics.py @@ -5,11 +5,12 @@ # This file may be distributed under the terms of the GNU GPLv3 license. import os, time, logging + class PrinterSysStats: def __init__(self, config): printer = config.get_printer() - self.last_process_time = self.total_process_time = 0. - self.last_load_avg = 0. + self.last_process_time = self.total_process_time = 0.0 + self.last_load_avg = 0.0 self.last_mem_avail = 0 self.mem_file = None try: @@ -17,26 +18,30 @@ class PrinterSysStats: except: pass printer.register_event_handler("klippy:disconnect", self._disconnect) + def _disconnect(self): if self.mem_file is not None: self.mem_file.close() self.mem_file = None + def stats(self, eventtime): # Get core usage stats ptime = time.process_time() pdiff = ptime - self.last_process_time self.last_process_time = ptime - if pdiff > 0.: + if pdiff > 0.0: self.total_process_time += pdiff self.last_load_avg = os.getloadavg()[0] - msg = "sysload=%.2f cputime=%.3f" % (self.last_load_avg, - self.total_process_time) + msg = "sysload=%.2f cputime=%.3f" % ( + self.last_load_avg, + self.total_process_time, + ) # Get available system memory if self.mem_file is not None: try: self.mem_file.seek(0) data = self.mem_file.read() - for line in data.split('\n'): + for line in data.split("\n"): if line.startswith("MemAvailable:"): self.last_mem_avail = int(line.split()[1]) msg = "%s memavail=%d" % (msg, self.last_mem_avail) @@ -44,10 +49,14 @@ class PrinterSysStats: except: pass return (False, msg) + def get_status(self, eventtime): - return {'sysload': self.last_load_avg, - 'cputime': self.total_process_time, - 'memavail': self.last_mem_avail} + return { + "sysload": self.last_load_avg, + "cputime": self.total_process_time, + "memavail": self.last_mem_avail, + } + class PrinterStats: def __init__(self, config): @@ -56,19 +65,22 @@ class PrinterStats: self.stats_timer = reactor.register_timer(self.generate_stats) self.stats_cb = [] self.printer.register_event_handler("klippy:ready", self.handle_ready) + def handle_ready(self): - self.stats_cb = [o.stats for n, o in self.printer.lookup_objects() - if hasattr(o, 'stats')] - if self.printer.get_start_args().get('debugoutput') is None: + self.stats_cb = [ + o.stats for n, o in self.printer.lookup_objects() if hasattr(o, "stats") + ] + if self.printer.get_start_args().get("debugoutput") is None: reactor = self.printer.get_reactor() reactor.update_timer(self.stats_timer, reactor.NOW) + def generate_stats(self, eventtime): stats = [cb(eventtime) for cb in self.stats_cb] if max([s[0] for s in stats]): - logging.info("Stats %.1f: %s", eventtime, - ' '.join([s[1] for s in stats])) - return eventtime + 1. + logging.info("Stats %.1f: %s", eventtime, " ".join([s[1] for s in stats])) + return eventtime + 1.0 + def load_config(config): - config.get_printer().add_object('system_stats', PrinterSysStats(config)) + config.get_printer().add_object("system_stats", PrinterSysStats(config)) return PrinterStats(config) |