From: Stefan Behnel Date: Sat, 10 Aug 2013 20:04:16 +0000 (+0200) Subject: provide serialised fallback if parallel processing fails X-Git-Tag: 0.20b1~385 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ff8734139314ebead1626c6e84e78416b098cdaf;p=platform%2Fupstream%2Fpython-cython.git provide serialised fallback if parallel processing fails --- diff --git a/bin/cythonize b/bin/cythonize index f1fa6ba..5d8d1d4 100755 --- a/bin/cythonize +++ b/bin/cythonize @@ -18,6 +18,17 @@ except ImportError: parallel_compiles = 0 +class _FakePool(object): + def map_async(self, func, args): + from itertools import imap + for _ in imap(func, args): + pass + + def close(self): pass + def terminate(self): pass + def join(self): pass + + def parse_directives(option, name, value, parser): dest = option.dest old_directives = dict(getattr(parser.values, dest, @@ -87,7 +98,10 @@ def cython_compile(path_pattern, options): if options.build: if len(ext_modules) > 1 and options.parallel: if pool is None: - pool = multiprocessing.Pool(options.parallel) + try: + pool = multiprocessing.Pool(options.parallel) + except OSError: + pool = _FakePool() pool.map_async(run_distutils, [ (base_dir, [ext]) for ext in ext_modules]) else: