summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/getloadavg.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge/getloadavg.py')
-rw-r--r--pym/_emerge/getloadavg.py24
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)