|
31 | 31 | #
|
32 | 32 |
|
33 | 33 | import argparse
|
| 34 | +import csv |
| 35 | +import datetime |
34 | 36 | import resource
|
35 | 37 | import subprocess
|
36 | 38 | import sys
|
@@ -85,6 +87,16 @@ def __call__(self, parser, namespace, v, option_string=None):
|
85 | 87 | action='store_true',
|
86 | 88 | default=False,
|
87 | 89 | 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") |
88 | 100 | parser.add_argument('remainder', nargs=argparse.REMAINDER,
|
89 | 101 | help="subcommand to run under supervision")
|
90 | 102 |
|
@@ -132,6 +144,15 @@ def __call__(self, parser, namespace, v, option_string=None):
|
132 | 144 | sys.stderr.write("rusage: exceeded limit: %.6f secs\n"
|
133 | 145 | % args.time)
|
134 | 146 |
|
| 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 | + |
135 | 156 | if over_mem or over_time:
|
136 | 157 | sys.exit(-1)
|
137 | 158 | sys.exit(ret)
|
0 commit comments