psutil
1#!/usr/bin/env python3
2
3# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7"""Same as bench_oneshot.py but uses perf module instead, which is
8supposed to be more precise.
9"""
10
11import sys12
13import pyperf # requires "pip install pyperf"14from bench_oneshot import names15
16import psutil17
18
19p = psutil.Process()20funs = [getattr(p, n) for n in names]21
22
23def call_normal():24for fun in funs:25fun()26
27
28def call_oneshot():29with p.oneshot():30for fun in funs:31fun()32
33
34def add_cmdline_args(cmd, args):35cmd.append(args.benchmark)36
37
38def main():39runner = pyperf.Runner()40
41args = runner.parse_args()42if not args.worker:43print(44"%s methods involved on platform %r (psutil %s):"45% (len(names), sys.platform, psutil.__version__)46)47for name in sorted(names):48print(" " + name)49
50runner.bench_func("normal", call_normal)51runner.bench_func("oneshot", call_oneshot)52
53
54main()55