diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2019-02-27 15:14:39 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2019-02-27 15:14:39 +0100 |
commit | 665f0c1c275a3575da4b01ea859a4c41a82a7321 (patch) | |
tree | c8afb4998002890c9040aa8cb068a1aea88a799a | |
parent | b31f3bf778004f1eae6ac552dd8eb8419664ac73 (diff) | |
download | psutil-665f0c1c275a3575da4b01ea859a4c41a82a7321.tar.gz |
introduce a new scriptsutils.py private module shared by all internal utils + refactor print_access_speed.py script
-rwxr-xr-x | scripts/internal/download_exes.py | 32 | ||||
-rw-r--r-- | scripts/internal/print_access_denied.py | 33 | ||||
-rw-r--r-- | scripts/internal/print_api_speed.py | 44 | ||||
-rw-r--r-- | scripts/internal/scriptutils.py | 42 |
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) |