Skip to content

Commit 9c0142c

Browse files
committed
[utils] Add a CSV-output mode to rusage script.
1 parent a063e5b commit 9c0142c

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

utils/rusage.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
#
3232

3333
import argparse
34+
import csv
35+
import datetime
3436
import resource
3537
import subprocess
3638
import sys
@@ -85,6 +87,16 @@ def __call__(self, parser, namespace, v, option_string=None):
8587
action='store_true',
8688
default=False,
8789
help="always report status and usage")
90+
parser.add_argument("--csv",
91+
action='store_true',
92+
default=False,
93+
help="write results as CSV")
94+
parser.add_argument("--csv-output", default="-",
95+
type=argparse.FileType('ab', 0),
96+
help="Append CSV output to file")
97+
parser.add_argument("--csv-name", type=str,
98+
default=str(datetime.datetime.now()),
99+
help="Label row in CSV with name")
88100
parser.add_argument('remainder', nargs=argparse.REMAINDER,
89101
help="subcommand to run under supervision")
90102

@@ -132,6 +144,15 @@ def __call__(self, parser, namespace, v, option_string=None):
132144
sys.stderr.write("rusage: exceeded limit: %.6f secs\n"
133145
% args.time)
134146

147+
if args.csv:
148+
fieldnames = ["time", "mem", "run"]
149+
out = csv.DictWriter(args.csv_output, fieldnames, dialect='excel-tab')
150+
if args.csv_output.tell() == 0:
151+
out.writeheader()
152+
out.writerow(dict(time=used.ru_utime,
153+
mem=used.ru_maxrss,
154+
run=args.csv_name))
155+
135156
if over_mem or over_time:
136157
sys.exit(-1)
137158
sys.exit(ret)

0 commit comments

Comments
 (0)