Index: Tools/Scripts/webkitpy/common/system/executive.py |
diff --git a/Tools/Scripts/webkitpy/common/system/executive.py b/Tools/Scripts/webkitpy/common/system/executive.py |
index 4f2223efa9e2da4d00d5167c77a3fc7c0a328163..f52db0a1a4b25b76dc512d4861f0adb0c6722af9 100644 |
--- a/Tools/Scripts/webkitpy/common/system/executive.py |
+++ b/Tools/Scripts/webkitpy/common/system/executive.py |
@@ -471,14 +471,17 @@ class Executive(object): |
def run_in_parallel(self, command_lines_and_cwds, processes=None): |
"""Runs a list of (cmd_line list, cwd string) tuples in parallel and returns a list of (retcode, stdout, stderr) tuples.""" |
assert len(command_lines_and_cwds) |
+ return self.map(_run_command_thunk, command_lines_and_cwds, processes) |
- if sys.platform in ('cygwin', 'win32'): |
- return map(_run_command_thunk, command_lines_and_cwds) |
- pool = multiprocessing.Pool(processes=processes) |
- results = pool.map(_run_command_thunk, command_lines_and_cwds) |
- pool.close() |
- pool.join() |
- return results |
+ def map(self, thunk, arglist, processes=None): |
+ if sys.platform in ('cygwin', 'win32') or len(arglist) == 1: |
+ return map(thunk, arglist) |
+ pool = multiprocessing.Pool(processes=(processes or multiprocessing.cpu_count())) |
+ try: |
+ return pool.map(thunk, arglist) |
+ finally: |
+ pool.close() |
+ pool.join() |
def _run_command_thunk(cmd_line_and_cwd): |