ThreadPool.imap stopped working in py 3.7.1

This commit is contained in:
Thomas Ferreira de Lima
2018-12-18 18:07:26 -05:00
parent 07bce7ee21
commit b06fe5817d
+8 -6
View File
@@ -59,13 +59,13 @@ from setuptools.extension import Extension, Library
import glob import glob
import os import os
import platform import platform
import distutils.sysconfig as sysconfig
from distutils.errors import CompileError from distutils.errors import CompileError
import distutils.command.build_ext import distutils.command.build_ext
import setuptools.command.build_ext import setuptools.command.build_ext
import multiprocessing import multiprocessing
N_cores = multiprocessing.cpu_count() N_cores = multiprocessing.cpu_count()
# monkey-patch for parallel compilation # monkey-patch for parallel compilation
# from https://stackoverflow.com/questions/11013851/speeding-up-build-process-with-distutils # from https://stackoverflow.com/questions/11013851/speeding-up-build-process-with-distutils
def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None):
@@ -88,6 +88,7 @@ def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=N
n_tries = 2 n_tries = 2
while n_tries > 0: while n_tries > 0:
try: try:
print("Building", obj)
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
except CompileError: except CompileError:
n_tries -= 1 n_tries -= 1
@@ -95,7 +96,7 @@ def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=N
else: else:
break break
# convert to list, imap is evaluated on-demand # convert to list, imap is evaluated on-demand
list(multiprocessing.pool.ThreadPool(N).imap(_single_compile, objects)) list(multiprocessing.pool.ThreadPool(N).map(_single_compile, objects))
return objects return objects
@@ -155,10 +156,10 @@ distutils.ccompiler.CCompiler.library_filename = patched_library_filename
# for this ... We're patching this back now. # for this ... We're patching this back now.
def always_link_shared_object( def always_link_shared_object(
self, objects, output_libname, output_dir=None, libraries=None, self, objects, output_libname, output_dir=None, libraries=None,
library_dirs=None, runtime_library_dirs=None, export_symbols=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None,
debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None,
target_lang=None): target_lang=None):
self.link( self.link(
self.SHARED_LIBRARY, objects, output_libname, self.SHARED_LIBRARY, objects, output_libname,
output_dir, libraries, library_dirs, runtime_library_dirs, output_dir, libraries, library_dirs, runtime_library_dirs,
@@ -166,6 +167,7 @@ def always_link_shared_object(
build_temp, target_lang build_temp, target_lang
) )
setuptools.command.build_ext.libtype = "shared" setuptools.command.build_ext.libtype = "shared"
setuptools.command.build_ext.link_shared_object = always_link_shared_object setuptools.command.build_ext.link_shared_object = always_link_shared_object