aboutsummaryrefslogtreecommitdiffstats
path: root/plot_exps.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-04-12 15:12:22 -0400
committerJonathan Herman <hermanjl@cs.unc.edu>2013-04-12 15:12:22 -0400
commit7eb34b5312974f601d1117eeaf6393b9648be31c (patch)
tree838df63d06886bd3bbec560add8a1ac4ef4dd069 /plot_exps.py
parent09bc409657606a37346d82ab1e4c44a165bd3541 (diff)
Improved error handling in parse_ and plot_exps.py.
Diffstat (limited to 'plot_exps.py')
-rwxr-xr-xplot_exps.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/plot_exps.py b/plot_exps.py
index 3b5636b..76e7396 100755
--- a/plot_exps.py
+++ b/plot_exps.py
@@ -7,11 +7,11 @@ import shutil as sh
7import sys 7import sys
8import traceback 8import traceback
9from collections import namedtuple 9from collections import namedtuple
10from multiprocessing import Pool, cpu_count
10from optparse import OptionParser 11from optparse import OptionParser
11from parse.col_map import ColMap,ColMapBuilder 12from parse.col_map import ColMap,ColMapBuilder
12from parse.dir_map import DirMap 13from parse.dir_map import DirMap
13from plot.style import StyleMap 14from plot.style import StyleMap
14from multiprocessing import Pool, cpu_count
15 15
16def parse_args(): 16def parse_args():
17 parser = OptionParser("usage: %prog [options] [csv_dir]...") 17 parser = OptionParser("usage: %prog [options] [csv_dir]...")
@@ -20,6 +20,9 @@ def parse_args():
20 help='directory for plot output', default='plot-data') 20 help='directory for plot output', default='plot-data')
21 parser.add_option('-f', '--force', action='store_true', default=False, 21 parser.add_option('-f', '--force', action='store_true', default=False,
22 dest='force', help='overwrite existing data') 22 dest='force', help='overwrite existing data')
23 parser.add_option('-p', '--processors', default=max(cpu_count() - 1, 1),
24 type='int', dest='processors',
25 help='number of threads for processing')
23 26
24 return parser.parse_args() 27 return parser.parse_args()
25 28
@@ -97,7 +100,7 @@ def plot_wrapper(details):
97 except: 100 except:
98 traceback.print_exc() 101 traceback.print_exc()
99 102
100def plot_dir(data_dir, out_dir, force): 103def plot_dir(data_dir, out_dir, max_procs, force):
101 sys.stderr.write("Reading data...\n") 104 sys.stderr.write("Reading data...\n")
102 dir_map = DirMap.read(data_dir) 105 dir_map = DirMap.read(data_dir)
103 106
@@ -119,7 +122,7 @@ def plot_dir(data_dir, out_dir, force):
119 if not plot_details: 122 if not plot_details:
120 return 123 return
121 124
122 procs = min(len(plot_details), max(cpu_count()/2, 1)) 125 procs = min(len(plot_details), max_procs)
123 pool = Pool(processes=procs) 126 pool = Pool(processes=procs)
124 enum = pool.imap_unordered(plot_wrapper, plot_details) 127 enum = pool.imap_unordered(plot_wrapper, plot_details)
125 128
@@ -150,7 +153,7 @@ def main():
150 out_dir = "%s/%s" % (opts.out_dir, os.path.split(dir)[1]) 153 out_dir = "%s/%s" % (opts.out_dir, os.path.split(dir)[1])
151 else: 154 else:
152 out_dir = opts.out_dir 155 out_dir = opts.out_dir
153 plot_dir(dir, out_dir, opts.force) 156 plot_dir(dir, out_dir, opts.processors, opts.force)
154 157
155if __name__ == '__main__': 158if __name__ == '__main__':
156 main() 159 main()