多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 7.10。关于自定义管道的注意事项 > 原文: [http://numba.pydata.org/numba-doc/latest/developer/custom_pipeline.html](http://numba.pydata.org/numba-doc/latest/developer/custom_pipeline.html) 警告 自定义管道功能仅供专家使用。修改编译器行为可能会使 numba 源代码中的内部假设无效。 对于寻找扩展或修改编译器行为的方法的库开发人员,可以通过继承`numba.compiler.BasePipeline`来定义自定义编译器管道。默认的 numba 管道被定义为`numba.compiler.Pipeline`,实现了`.define_pipelines()`方法,它增加了 _nopython-mode_ ,_ 对象模式 _ 和 _ 解释模式 _ 管道。这三条管道分别通过`.define_nopython_pipeline`,`.define_objectmode_pipeline`和`.define_interpreted_pipeline`方法在`BasePipeline`中定义。 要使用`BasePipeline`的自定义子类,请将其作为`@jit`关键字参数提供给`@jit`和`@generated_jit`装饰器。通过这样做,自定义管道的效果仅限于正在装饰的功能。 以下是`BasePipeline`类的实现者可用的常用方法: ```py class numba.compiler.BasePipeline(typingctx, targetctx, library, args, return_type, flags, locals) ``` 存储和管理编译器管道的状态 ```py add_cleanup_stage(pm) ``` 添加清理阶段以删除中间结果。 ```py add_lowering_stage(pm) ``` 为 nopython-mode 添加降低(代码生成)阶段 ```py add_optimization_stage(pm) ``` 添加优化阶段。 ```py add_pre_typing_stage(pm) ``` 添加类型推断之前的所有阶段。当前阶段包含类型不可知的重写过程。 ```py add_preprocessing_stage(pm) ``` 添加分析字节码的预处理阶段以准备 Numba IR。 ```py add_typing_stage(pm) ``` 添加 nopython 模式所需的类型推断阶段。 ```py define_interpreted_pipeline(pm, name='interp') ``` 将解释模式(回退)管道添加到管道管理器 ```py define_nopython_pipeline(pm, name='nopython') ``` 将 nopython-mode 管道添加到管道管理器 ```py define_objectmode_pipeline(pm, name='object') ``` 将对象模式管道添加到管道管理器