[Add] custom monkey path for CCompiler
This commit is contained in:
parent
c3546a8bf7
commit
a99b8eb815
29
setup.py
29
setup.py
@ -22,6 +22,35 @@ import sys
|
|||||||
|
|
||||||
from setuptools import Extension, find_packages, setup
|
from setuptools import Extension, find_packages, setup
|
||||||
|
|
||||||
|
|
||||||
|
# https://stackoverflow.com/a/13176803
|
||||||
|
# monkey-patch for parallel compilation
|
||||||
|
def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0,
|
||||||
|
extra_preargs=None, extra_postargs=None, depends=None):
|
||||||
|
# those lines are copied from distutils.ccompiler.CCompiler directly
|
||||||
|
macros, objects, extra_postargs, pp_opts, build = self._setup_compile(output_dir, macros,
|
||||||
|
include_dirs, sources,
|
||||||
|
depends, extra_postargs)
|
||||||
|
cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
|
||||||
|
# parallel code
|
||||||
|
N = 2 # number of parallel compilations
|
||||||
|
import multiprocessing.pool
|
||||||
|
def _single_compile(obj):
|
||||||
|
try:
|
||||||
|
src, ext = build[obj]
|
||||||
|
except KeyError:
|
||||||
|
return
|
||||||
|
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
|
||||||
|
|
||||||
|
# convert to list, imap is evaluated on-demand
|
||||||
|
list(multiprocessing.pool.ThreadPool(N).imap(_single_compile, objects))
|
||||||
|
return objects
|
||||||
|
|
||||||
|
|
||||||
|
import distutils.ccompiler
|
||||||
|
|
||||||
|
distutils.ccompiler.CCompiler.compile = parallelCCompile
|
||||||
|
|
||||||
with open("vnpy/__init__.py", "rb") as f:
|
with open("vnpy/__init__.py", "rb") as f:
|
||||||
version_line = re.search(
|
version_line = re.search(
|
||||||
r"__version__\s+=\s+(.*)", f.read().decode("utf-8")
|
r"__version__\s+=\s+(.*)", f.read().decode("utf-8")
|
||||||
|
Loading…
Reference in New Issue
Block a user