summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2017-01-24 17:14:36 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2017-01-24 17:14:36 +0100
commit167e3938c15f3b1dcc7b20685f73df3d3077f276 (patch)
tree840a7011ed70b956c8cd6b065dcff07ef4f02f0d
parentde07c1c88c8650dd1c5db9fecfa79d93e247e9fa (diff)
downloadpsutil-167e3938c15f3b1dcc7b20685f73df3d3077f276.tar.gz
fiz ZeroDivionError on cpu_freq()
-rw-r--r--psutil/__init__.py37
1 files changed, 23 insertions, 14 deletions
diff --git a/psutil/__init__.py b/psutil/__init__.py
index 97f1df97..5b248476 100644
--- a/psutil/__init__.py
+++ b/psutil/__init__.py
@@ -1876,24 +1876,33 @@ if hasattr(_psplatform, "cpu_freq"):
each CPU. If not a list with one element is returned.
"""
ret = _psplatform.cpu_freq()
- # XXX
- from pprint import pprint as pp
- pp(ret)
if percpu:
return ret
else:
- num_cpus = len(ret)
- if num_cpus == 1:
+ num_cpus = float(len(ret))
+ if num_cpus == 0:
+ return []
+ elif num_cpus == 1:
return ret[0]
- currs, mins, maxs = [], [], []
- for cpu in ret:
- currs.append(cpu.current)
- mins.append(cpu.min)
- maxs.append(cpu.max)
- return _common.scpufreq(
- sum(currs) / num_cpus,
- sum(mins) / num_cpus,
- sum(maxs) / num_cpus)
+ else:
+ currs, mins, maxs = [], [], []
+ for cpu in ret:
+ currs.append(cpu.current)
+ mins.append(cpu.min)
+ maxs.append(cpu.max)
+ try:
+ current = sum(currs) / num_cpus,
+ except ZeroDivisionError:
+ current = 0.0
+ try:
+ min_ = sum(mins) / num_cpus,
+ except ZeroDivisionError:
+ min_ = 0.0
+ try:
+ max_ = sum(maxs) / num_cpus,
+ except ZeroDivisionError:
+ max_ = 0.0
+ return _common.scpufreq(current, min_, max_)
__all__.append("cpu_freq")