f314e0de创建于 2023年11月13日历史提交

.. _aot-compilation:

Ahead-of-Time compilation

.. note:: This module is pending deprecation. Please see :ref:deprecation-numba-pycc for more information.

.. currentmodule:: numba.pycc

.. class:: CC(extension_name, source_module=None)

An object used to generate compiled extensions from Numba-compiled Python functions. extension_name is the name of the extension to be generated. source_module is the Python module containing the functions; if None, it is inferred by examining the call stack.

:class:CC instances have the following attributes and methods:

.. attribute:: name

  (read-only attribute) The name of the extension module to be generated.

.. attribute:: output_dir

  (read-write attribute) The directory the extension module will be
  written into.  By default it is the directory the *source_module* is
  located in.

.. attribute:: output_file

  (read-write attribute) The name of the file the extension module will
  be written to.  By default this follows the Python naming convention
  for the current platform.

.. attribute:: target_cpu

  (read-write attribute) The name of the CPU model to generate code for.
  This will select the appropriate instruction set extensions.  By
  default, a generic CPU is selected in order to produce portable code.

  Recognized names for this attribute depend on the current architecture
  and LLVM version.  If you have LLVM installed, ``llc -mcpu=help``
  will give you a list.  Examples on x86-64 are ``"ivybridge"``,
  ``"haswell"``, ``"skylake"`` or ``"broadwell"``.  You can also give
  the value ``"host"`` which will select the current host CPU.

.. attribute:: verbose

  (read-write attribute) If true, print out information while
  compiling the extension.  False by default.

.. decorator:: export(exported_name, sig)

  Mark the decorated function for compilation with the signature *sig*.
  The compiled function will be exposed as *exported_name* in the
  generated extension module.

  All exported names within a given :class:`CC` instance must be
  distinct, otherwise an exception is raised.

.. method:: compile()

  Compile all exported functions and generate the extension module
  as specified by :attr:`output_dir` and :attr:`output_file`.

.. method:: distutils_extension(**kwargs)

  Return a :py:class:`distutils.core.Extension` instance allowing
  to integrate generation of the extension module in a conventional
  ``setup.py``-driven build process.  The optional *kwargs* let you
  pass optional parameters to the :py:class:`~distutils.core.Extension`
  constructor.

  In this mode of operation, it is not necessary to call :meth:`compile`
  yourself.  Also, :attr:`output_dir` and :attr:`output_file` will be
  ignored.