| Index: perf_insights/perf_insights/map_runner.py | 
| diff --git a/perf_insights/perf_insights/map_runner.py b/perf_insights/perf_insights/map_runner.py | 
| index e349e5d0130b8d8d12710d4a0e4e50ba6cb76e78..e66a330fb7b07b755a4fdab171bec91f51f069ca 100644 | 
| --- a/perf_insights/perf_insights/map_runner.py | 
| +++ b/perf_insights/perf_insights/map_runner.py | 
| @@ -14,11 +14,14 @@ from perf_insights import value as value_module | 
|  | 
| from perf_insights.results import gtest_progress_reporter | 
|  | 
| +import perf_insights_project | 
| + | 
| + | 
| AUTO_JOB_COUNT = 'auto-job-count' | 
|  | 
| -class MapRunner: | 
| +class MapRunner(object): | 
| def __init__(self, trace_handles, map_function_handle, | 
| -               stop_on_error=False, progress_reporter=None): | 
| +               stop_on_error=False, progress_reporter=None, vulcanize=True): | 
| self._map_function_handle = map_function_handle | 
| self._work_queue = queue.Queue() | 
| self._result_queue = queue.Queue() | 
| @@ -32,15 +35,15 @@ class MapRunner: | 
| self._progress_reporter = progress_reporter | 
| for trace_handle in trace_handles: | 
| self._work_queue.put(trace_handle) | 
| +    self._vulcanized_map_single_trace = None | 
| +    self._single_trace_mapper = map_single_trace.SingleTraceMapper(vulcanize) | 
|  | 
| def _ProcessTrace(self, trace_handle): | 
| run_info = trace_handle.run_info | 
| subresults = results_module.Results() | 
| run_reporter = self._progress_reporter.WillRun(run_info) | 
| -    map_single_trace.MapSingleTrace( | 
| -        subresults, | 
| -        trace_handle, | 
| -        self._map_function_handle) | 
| +    self._single_trace_mapper.MapSingleTrace( | 
| +        subresults, trace_handle, self._map_function_handle) | 
| for v in subresults.all_values: | 
| run_reporter.DidAddValue(v) | 
| self._result_queue.put(subresults) | 
| @@ -56,6 +59,12 @@ class MapRunner: | 
| self._work_queue.task_done() | 
|  | 
| def Run(self, jobs=1, output_formatters=None): | 
| +    try: | 
| +      return self._RunMapTraceJobs(jobs, output_formatters) | 
| +    finally: | 
| +      self._single_trace_mapper.CleanUp() | 
| + | 
| +  def _RunMapTraceJobs(self, jobs, output_formatters): | 
| if jobs == AUTO_JOB_COUNT: | 
| jobs = multiprocessing.cpu_count() | 
|  | 
|  |