diff options
Diffstat (limited to 'pym/_emerge/getloadavg.py')
-rw-r--r-- | pym/_emerge/getloadavg.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/pym/_emerge/getloadavg.py b/pym/_emerge/getloadavg.py new file mode 100644 index 000000000..b5a66cce9 --- /dev/null +++ b/pym/_emerge/getloadavg.py @@ -0,0 +1,24 @@ +import os + +getloadavg = getattr(os, "getloadavg", None) +if getloadavg is None: + def getloadavg(): + """ + Uses /proc/loadavg to emulate os.getloadavg(). + Raises OSError if the load average was unobtainable. + """ + try: + loadavg_str = open('/proc/loadavg').readline() + except IOError: + # getloadavg() is only supposed to raise OSError, so convert + raise OSError('unknown') + loadavg_split = loadavg_str.split() + if len(loadavg_split) < 3: + raise OSError('unknown') + loadavg_floats = [] + for i in xrange(3): + try: + loadavg_floats.append(float(loadavg_split[i])) + except ValueError: + raise OSError('unknown') + return tuple(loadavg_floats) |