summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2019-02-27 15:14:39 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2019-02-27 15:14:39 +0100
commit665f0c1c275a3575da4b01ea859a4c41a82a7321 (patch)
treec8afb4998002890c9040aa8cb068a1aea88a799a
parentb31f3bf778004f1eae6ac552dd8eb8419664ac73 (diff)
downloadpsutil-665f0c1c275a3575da4b01ea859a4c41a82a7321.tar.gz
introduce a new scriptsutils.py private module shared by all internal utils + refactor print_access_speed.py script
-rwxr-xr-xscripts/internal/download_exes.py32
-rw-r--r--scripts/internal/print_access_denied.py33
-rw-r--r--scripts/internal/print_api_speed.py44
-rw-r--r--scripts/internal/scriptutils.py42
4 files changed, 65 insertions, 86 deletions
diff --git a/scripts/internal/download_exes.py b/scripts/internal/download_exes.py
index d138f0d3..e3e6a46d 100755
--- a/scripts/internal/download_exes.py
+++ b/scripts/internal/download_exes.py
@@ -22,6 +22,7 @@ import shutil
import sys
from psutil import __version__ as PSUTIL_VERSION
+from scriptutils import hilite
BASE_URL = 'https://ci.appveyor.com/api'
@@ -36,37 +37,6 @@ def exit(msg=""):
sys.exit(1)
-def term_supports_colors(file=sys.stdout):
- try:
- import curses
- assert file.isatty()
- curses.setupterm()
- assert curses.tigetnum("colors") > 0
- except Exception:
- return False
- else:
- return True
-
-
-COLORS = term_supports_colors()
-
-
-def hilite(s, ok=True, bold=False):
- """Return an highlighted version of 'string'."""
- if not COLORS:
- return s
- attr = []
- if ok is None: # no color
- pass
- elif ok: # green
- attr.append('32')
- else: # red
- attr.append('31')
- if bold:
- attr.append('1')
- return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), s)
-
-
def safe_makedirs(path):
try:
os.makedirs(path)
diff --git a/scripts/internal/print_access_denied.py b/scripts/internal/print_access_denied.py
index 8381928d..7e46f48e 100644
--- a/scripts/internal/print_access_denied.py
+++ b/scripts/internal/print_access_denied.py
@@ -46,40 +46,9 @@ total: 1736 (336 total processes)
from __future__ import print_function, division
from collections import defaultdict
-import sys
import psutil
-
-
-def term_supports_colors(file=sys.stdout):
- try:
- import curses
- assert file.isatty()
- curses.setupterm()
- assert curses.tigetnum("colors") > 0
- except Exception:
- return False
- else:
- return True
-
-
-COLORS = term_supports_colors()
-
-
-def hilite(s, ok=True, bold=False):
- """Return an highlighted version of 'string'."""
- if not COLORS:
- return s
- attr = []
- if ok is None: # no color
- pass
- elif ok: # green
- attr.append('32')
- else: # red
- attr.append('31')
- if bold:
- attr.append('1')
- return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), s)
+from scriptutils import hilite
def main():
diff --git a/scripts/internal/print_api_speed.py b/scripts/internal/print_api_speed.py
index 24b98f11..c0e0e0e0 100644
--- a/scripts/internal/print_api_speed.py
+++ b/scripts/internal/print_api_speed.py
@@ -25,6 +25,7 @@ PROCESS APIS
from __future__ import print_function, division
from timeit import default_timer as timer
+import inspect
import os
import psutil
@@ -38,7 +39,7 @@ def print_timings():
timings.sort(key=lambda x: x[0 if SORT_BY_NAME else 1])
while timings[:]:
title, elapsed = timings.pop(0)
- print(" %-30s %f secs" % (title, elapsed))
+ print("%-30s %f secs" % (title, elapsed))
def timecall(title, fun, *args, **kw):
@@ -49,33 +50,30 @@ def timecall(title, fun, *args, **kw):
def main():
+ # --- system
+
+ public_apis = []
+ for name in psutil.__all__:
+ obj = getattr(psutil, name, None)
+ if inspect.isfunction(obj):
+ if name not in ('wait_procs', 'process_iter'):
+ public_apis.append(name)
+
print("SYSTEM APIS")
- timecall('cpu_count', psutil.cpu_count)
+ for name in public_apis:
+ fun = getattr(psutil, name)
+ args = ()
+ if name == 'pid_exists':
+ args = (os.getpid(), )
+ elif name == 'disk_usage':
+ args = (os.getcwd(), )
+ timecall(name, fun, *args)
timecall('cpu_count (cores)', psutil.cpu_count, logical=False)
- timecall('cpu_times', psutil.cpu_times)
- timecall('cpu_percent', psutil.cpu_percent, interval=0)
- timecall('cpu_times_percent', psutil.cpu_times_percent, interval=0)
- timecall('cpu_stats', psutil.cpu_stats)
- timecall('cpu_freq', psutil.cpu_freq)
- timecall('virtual_memory', psutil.virtual_memory)
- timecall('swap_memory', psutil.swap_memory)
- timecall('disk_partitions', psutil.disk_partitions)
- timecall('disk_usage', psutil.disk_usage, os.getcwd())
- timecall('disk_io_counters', psutil.disk_io_counters)
- timecall('net_io_counters', psutil.net_io_counters)
- timecall('net_connections', psutil.net_connections)
- timecall('net_if_addrs', psutil.net_if_addrs)
- timecall('net_if_stats', psutil.net_if_stats)
- timecall('sensors_temperatures', psutil.sensors_temperatures)
- timecall('sensors_fans', psutil.sensors_fans)
- timecall('sensors_battery', psutil.sensors_battery)
- timecall('boot_time', psutil.boot_time)
- timecall('users', psutil.users)
- timecall('pids', psutil.pids)
- timecall('pid_exists', psutil.pid_exists, os.getpid())
timecall('process_iter (all)', lambda: list(psutil.process_iter()))
print_timings()
+ # --- process
+
print("\nPROCESS APIS")
ignore = ['send_signal', 'suspend', 'resume', 'terminate', 'kill', 'wait',
'as_dict', 'parent', 'parents', 'memory_info_ex', 'oneshot',
diff --git a/scripts/internal/scriptutils.py b/scripts/internal/scriptutils.py
new file mode 100644
index 00000000..7369804c
--- /dev/null
+++ b/scripts/internal/scriptutils.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Utils shared by all files in scripts/internal."""
+
+import sys
+
+from psutil._compat import lru_cache
+
+__all__ = ['hilite']
+
+
+@lru_cache()
+def _term_supports_colors(file=sys.stdout):
+ try:
+ import curses
+ assert file.isatty()
+ curses.setupterm()
+ assert curses.tigetnum("colors") > 0
+ except Exception:
+ return False
+ else:
+ return True
+
+
+def hilite(s, ok=True, bold=False):
+ """Return an highlighted version of 'string'."""
+ if not _term_supports_colors():
+ return s
+ attr = []
+ if ok is None: # no color
+ pass
+ elif ok: # green
+ attr.append('32')
+ else: # red
+ attr.append('31')
+ if bold:
+ attr.append('1')
+ return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), s)