| # Copyright 1999-2013 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| from portage 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: |
| with open("/proc/loadavg") as f: |
| loadavg_str = f.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 range(3): |
| try: |
| loadavg_floats.append(float(loadavg_split[i])) |
| except ValueError: |
| raise OSError("unknown") |
| return tuple(loadavg_floats) |