diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-03-02 23:20:24 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-03-02 23:20:24 +0100 |
commit | e2aade95a06d06326d8f401e2836b846795aeb80 (patch) | |
tree | 2633950673d9b31fb7bbed36ccc5bc57f1e5ae15 | |
parent | add moc (diff) | |
download | xpybar-e2aade95a06d06326d8f401e2836b846795aeb80.tar.gz xpybar-e2aade95a06d06326d8f401e2836b846795aeb80.tar.bz2 xpybar-e2aade95a06d06326d8f401e2836b846795aeb80.tar.xz |
m
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | examples/plugin-test | 6 | ||||
-rw-r--r-- | src/plugins/loadavg.py | 38 | ||||
-rw-r--r-- | src/plugins/moc.py | 4 |
3 files changed, 33 insertions, 15 deletions
diff --git a/examples/plugin-test b/examples/plugin-test index 0a0113d..1bbf465 100644 --- a/examples/plugin-test +++ b/examples/plugin-test @@ -33,9 +33,9 @@ def redraw(): idle = 'Idle time: %s : %s : %1.2f%%' % (avg_idle, tot_idle, prc_idle * 100) loadavg_ = AverageLoad() - avg_5 = int(loadavg_.avg_5_min * 100) - avg_10 = int(loadavg_.avg_10_min * 100) - avg_15 = int(loadavg_.avg_15_min * 100) + avg_5 = int(loadavg_.average_avg_5_min * 100) + avg_10 = int(loadavg_.average_avg_10_min * 100) + avg_15 = int(loadavg_.average_avg_15_min * 100) act_tasks = loadavg_.active_tasks tot_tasks = loadavg_.total_tasks last_pid = loadavg_.last_pid diff --git a/src/plugins/loadavg.py b/src/plugins/loadavg.py index b66ca6f..a270d5e 100644 --- a/src/plugins/loadavg.py +++ b/src/plugins/loadavg.py @@ -22,12 +22,20 @@ class AverageLoad: ''' The current average load, number of scheduling entities and latest PID - @variable avg_5_min:float The average load over the last 5 minutes - @variable avg_10_min:float The average load over the last 10 minutes - @variable avg_15_min:float The average load over the last 15 minutes - @variable active_tasks:int The number of active scheduling entities - @variable total_tasks:int The total number of scheduling entities - @variable last_pid:int The PID of the last created process on the system + @variable total_avg_5_min:float The average load over the last 5 minutes, sum of processors + @variable total_avg_10_min:float The average load over the last 10 minutes, sum of processors + @variable total_avg_15_min:float The average load over the last 15 minutes, sum of processors + @variable average_avg_5_min:float The average load over the last 5 minutes, average of processors + @variable average_avg_10_min:float The average load over the last 10 minutes, average of processors + @variable average_avg_15_min:float The average load over the last 15 minutes, average of processors + @variable active_tasks:int The number of active scheduling entities + @variable total_tasks:int The total number of scheduling entities + @variable last_pid:int The PID of the last created process on the system + ''' + + cpu_count = None + ''' + :int? The number of processors on the machine ''' @@ -41,10 +49,20 @@ class AverageLoad: uptime = uptime.decode('utf-8', 'replace') uptime = uptime.replace('\n', ' ').split(' ') - self.avg_5_min, self.avg_10_min, self.avg_15_min, tasks, self.last_pid = uptime[:5] - self.avg_5_min = float(self.avg_5_min) - self.avg_10_min = float(self.avg_10_min) - self.avg_15_min = float(self.avg_15_min) + if AverageLoad.cpu_count is None: + with open('/proc/cpuinfo', 'rb') as file: + AverageLoad.cpu_count = file.read() + AverageLoad.cpu_count = AverageLoad.cpu_count.decode('utf-8', 'replace').split('\n') + AverageLoad.cpu_count = filter(lambda line : 'processor' in line, AverageLoad.cpu_count) + AverageLoad.cpu_count = len(list(AverageLoad.cpu_count)) + + self.total_avg_5_min, self.total_avg_10_min, self.total_avg_15_min, tasks, self.last_pid = uptime[:5] + self.total_avg_5_min = float(self.total_avg_5_min) + self.total_avg_10_min = float(self.total_avg_10_min) + self.total_avg_15_min = float(self.total_avg_15_min) + self.average_avg_5_min = self.total_avg_5_min / AverageLoad.cpu_count + self.average_avg_10_min = self.total_avg_10_min / AverageLoad.cpu_count + self.average_avg_15_min = self.total_avg_15_min / AverageLoad.cpu_count self.last_pid = int(self.last_pid) self.active_tasks, self.total_tasks = [int(t) for t in tasks.split('/')] diff --git a/src/plugins/moc.py b/src/plugins/moc.py index 560370a..04bda65 100644 --- a/src/plugins/moc.py +++ b/src/plugins/moc.py @@ -58,7 +58,7 @@ class MOC: Constructor ''' self.__info = {} - for line in spawn_read('mocp', '--info').split('\n'): + for line in MOC.__interact('--info').stdout.read().decode('utf-8', 'replace').split('\n'): if ': ' in line: line = line.split(': ') self.__info[line[0]] = ': '.join(line[1:]) @@ -99,7 +99,7 @@ class MOC: @return :Popen The spawned process ''' command = ['mocp'] + list(args) - return subprocess.Popen(command, stderr = sys.stderr, stdout = subprocess.PIPE) + return subprocess.Popen(command, stderr = subprocess.PIPE, stdout = subprocess.PIPE) @staticmethod |