summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/getloadavg.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-06-22 18:21:56 +0000
committerZac Medico <zmedico@gentoo.org>2009-06-22 18:21:56 +0000
commit69500d28402817fb70c104501b5c8f4f54650f4a (patch)
treeb718c8028eb09ad8e8fb5e1503df58abb502b712 /pym/_emerge/getloadavg.py
parent13d9a8d5f95575c814570cd4e5713541ed022f37 (diff)
downloadportage-69500d28402817fb70c104501b5c8f4f54650f4a.tar.gz
portage-69500d28402817fb70c104501b5c8f4f54650f4a.tar.bz2
portage-69500d28402817fb70c104501b5c8f4f54650f4a.zip
Bug #275047 - Split _emerge/__init__.py into smaller pieces (part 2).
Thanks to Sebastian Mingramm (few) <s.mingramm@gmx.de> for this patch. svn path=/main/trunk/; revision=13667
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)