[utils] Add a CSV-output mode to rusage script.

This commit is contained in:
Graydon Hoare
2017-05-12 18:46:20 -07:00
parent a063e5b198
commit 9c0142c22a

View File

@@ -31,6 +31,8 @@
#
import argparse
import csv
import datetime
import resource
import subprocess
import sys
@@ -85,6 +87,16 @@ parser.add_argument("--verbose",
action='store_true',
default=False,
help="always report status and usage")
parser.add_argument("--csv",
action='store_true',
default=False,
help="write results as CSV")
parser.add_argument("--csv-output", default="-",
type=argparse.FileType('ab', 0),
help="Append CSV output to file")
parser.add_argument("--csv-name", type=str,
default=str(datetime.datetime.now()),
help="Label row in CSV with name")
parser.add_argument('remainder', nargs=argparse.REMAINDER,
help="subcommand to run under supervision")
@@ -132,6 +144,15 @@ if over_time:
sys.stderr.write("rusage: exceeded limit: %.6f secs\n"
% args.time)
if args.csv:
fieldnames = ["time", "mem", "run"]
out = csv.DictWriter(args.csv_output, fieldnames, dialect='excel-tab')
if args.csv_output.tell() == 0:
out.writeheader()
out.writerow(dict(time=used.ru_utime,
mem=used.ru_maxrss,
run=args.csv_name))
if over_mem or over_time:
sys.exit(-1)
sys.exit(ret)