2.3。提前编译
原文: http://numba.pydata.org/numba-doc/latest/reference/aot-compilation.html
class numba.pycc.CC(extension_name, source_module=None)
用于从 Numba 编译的 Python 函数生成编译扩展的对象。 extension_name 是要生成的扩展名。 source_module 是包含这些函数的 Python 模块;如果None
,则通过检查调用堆栈来推断。
CC
实例具有以下属性和方法:
name
(只读属性)要生成的扩展模块的名称。
output_dir
(读写属性)扩展模块将写入的目录。默认情况下,它是 source_module 所在的目录。
output_file
(读写属性)扩展模块将写入的文件的名称。默认情况下,这遵循当前平台的 Python 命名约定。
target_cpu
(读写属性)为其生成代码的 CPU 模型的名称。这将选择适当的指令集扩展。默认情况下,选择通用 CPU 以生成可移植代码。
此属性的已识别名称取决于当前体系结构和 LLVM 版本。如果安装了 LLVM,llc -mcpu=help
将为您提供一个列表。 x86-64 的例子是"ivybridge"
,"haswell"
,"skylake"
或"broadwell"
。您还可以给出值"host"
,它将选择当前的主机 CPU。
verbose
(读写属性)如果为 true,则在编译扩展时打印输出信息。默认为 False。
@export(exported_name, sig)
使用签名 sig 标记要编译的修饰函数。编译的函数将在生成的扩展模块中作为 exported_name 公开。
给定 CC
实例中的所有导出名称必须是不同的,否则会引发异常。
compile()
编译所有导出的函数并生成 output_dir
和 output_file
指定的扩展模块。
distutils_extension(**kwargs)
返回 distutils.core.Extension
实例,允许在传统的setup.py
驱动的构建过程中集成扩展模块的生成。可选的 kwargs 允许您将可选参数传递给 Extension
构造函数。
在这种操作模式下,没有必要自己调用 compile()
。此外, output_dir
和 output_file
将被忽略。