 Chromium Code Reviews
 Chromium Code Reviews Issue 931233002:
  Make gcmole execute in parallel.  (Closed) 
  Base URL: https://chromium.googlesource.com/v8/v8.git@master
    
  
    Issue 931233002:
  Make gcmole execute in parallel.  (Closed) 
  Base URL: https://chromium.googlesource.com/v8/v8.git@master| Index: tools/gcmole/parallel.py | 
| diff --git a/tools/gcmole/parallel.py b/tools/gcmole/parallel.py | 
| new file mode 100755 | 
| index 0000000000000000000000000000000000000000..53849f050b26f05085d69eaea3a6fa0203390266 | 
| --- /dev/null | 
| +++ b/tools/gcmole/parallel.py | 
| @@ -0,0 +1,44 @@ | 
| +#!/usr/bin/env python | 
| +# Copyright 2015 the V8 project authors. All rights reserved. | 
| +# Use of this source code is governed by a BSD-style license that can be | 
| +# found in the LICENSE file. | 
| + | 
| +""" | 
| +This script calls the first argument for each of the following arguments in | 
| +parallel. E.g. | 
| +parallel.py "clang --opt" file1 file2 | 
| +calls | 
| +clang --opt file1 | 
| +clang --opt file2 | 
| + | 
| +The output (stdout and stderr) is concatenated sequentially in the form: | 
| +______________ file1 | 
| +<output of clang --opt file1> | 
| +______________ finish <exit code of clang --opt file1> ______________ | 
| +______________ file2 | 
| +<output of clang --opt file2> | 
| +______________ finish <exit code of clang --opt file2> ______________ | 
| +""" | 
| + | 
| +import itertools | 
| +import multiprocessing | 
| +import subprocess | 
| +import sys | 
| + | 
| +def Invoke(cmdline): | 
| 
tandrii(chromium)
2015/02/18 15:20:11
nit: pep8 recommends lowercase
 | 
| + try: | 
| + return (subprocess.check_output( | 
| + cmdline, shell=True, stderr=subprocess.STDOUT), 0) | 
| + except subprocess.CalledProcessError as e: | 
| + return (e.output, e.returncode) | 
| + | 
| +if __name__ == '__main__': | 
| + assert len(sys.argv) > 2 | 
| + processes = multiprocessing.cpu_count() | 
| + pool = multiprocessing.Pool(processes=processes) | 
| + cmdlines = ["%s %s" % (sys.argv[1], filename) for filename in sys.argv[2:]] | 
| + for filename, result in itertools.izip( | 
| + sys.argv[2:], pool.imap(Invoke, cmdlines)): | 
| + print "______________ %s" % filename | 
| 
tandrii(chromium)
2015/02/18 15:19:08
I assume this output is for humans, right?
 | 
| + print result[0] | 
| + print "______________ finish %d ______________" % result[1] |