# 7.11。環境對象
> 原文: [http://numba.pydata.org/numba-doc/latest/developer/environment.html](http://numba.pydata.org/numba-doc/latest/developer/environment.html)
Environment 對象(Env)用于維護對支持對象模式和 nopython 模式的編譯函數所需的 python 對象的引用。
在 nopython 模式中,Env 用于:
* 存儲 pyobjects 以便從原生值重建,例如:*用于打印 NumPy 數組的原生值; *用于返回或讓本機值返回解釋器。
在對象模式下,Env 用于:
* 存儲代碼中引用的常量值。
* 存儲對函數全局字典的引用以加載全局值。
## 7.11.1。實施
Env 分為兩部分。在`_dynfunc.c`中,Env 被定義為`EnvironmentObject`作為 Python C 擴展類型。在`lowering.py`中, <cite>EnvironmentObject`</cite> (導出為`_dynfunc.Environment`)被擴展為支持降低所需的必要操作。
### 7.11.1.1。序列化
Env 支持被腌制。編譯緩存文件和提前編譯的模塊將所有使用過的 Env 序列化,以便在運行時重新創建。
### 7.11.1.2。用法
在降低功能或生成器的開始時,創建 Env。在整個編譯過程中,Env 會發生變異以附加其他信息。編譯的代碼通過發出的 LLVM IR 中的全局變量引用 Env。全局變量使用“common”鏈接進行零初始化,這是 C 全局值的默認鏈接。當模塊鏈接在一起時,使用此鏈接允許將全局變量的多個定義合并為單個定義。全局變量的名稱根據函數名稱計算(請參閱目標上下文的`FunctionDescriptor.env_name`和`.get_env_name()`)。
加載編譯函數時初始化 Env。 JIT 引擎找到 Env 的相關全局變量的地址,并將 Env 的地址存儲到其中。對于緩存函數,適用相同的過程。對于提前編譯的函數,生成的庫中的模塊初始值設定項負責初始化模塊中所有 Env 的全局變量。
- 1. 用戶手冊
- 1.1。 Numba 的約 5 分鐘指南
- 1.2。概述
- 1.3。安裝
- 1.4。使用@jit 編譯 Python 代碼
- 1.5。使用@generated_jit 進行靈活的專業化
- 1.6。創建 Numpy 通用函數
- 1.7。用@jitclass 編譯 python 類
- 1.8。使用@cfunc 創建 C 回調
- 1.9。提前編譯代碼
- 1.10。使用@jit 自動并行化
- 1.11。使用@stencil裝飾器
- 1.12。從 JIT 代碼 中回調到 Python 解釋器
- 1.13。性能提示
- 1.14。線程層
- 1.15。故障排除和提示
- 1.16。常見問題
- 1.17。示例
- 1.18。會談和教程
- 2. 參考手冊
- 2.1。類型和簽名
- 2.2。即時編譯
- 2.3。提前編譯
- 2.4。公用事業
- 2.5。環境變量
- 2.6。支持的 Python 功能
- 2.7。支持的 NumPy 功能
- 2.8。與 Python 語義的偏差
- 2.9。浮點陷阱
- 2.10。 Python 2.7 壽命終止計劃
- 3. 用于 CUDA GPU 的 Numba
- 3.1。概述
- 3.2。編寫 CUDA 內核
- 3.3。內存管理
- 3.4。編寫設備功能
- 3.5。 CUDA Python 中支持的 Python 功能
- 3.6。支持的原子操作
- 3.7。隨機數生成
- 3.8。設備管理
- 3.10。示例
- 3.11。使用 CUDA 模擬器 調試 CUDA Python
- 3.12。 GPU 減少
- 3.13。 CUDA Ufuncs 和廣義 Ufuncs
- 3.14。共享 CUDA 內存
- 3.15。 CUDA 陣列接口
- 3.16。 CUDA 常見問題
- 4. CUDA Python 參考
- 4.1。 CUDA 主機 API
- 4.2。 CUDA 內核 API
- 4.3。內存管理
- 5. 用于 AMD ROC GPU 的 Numba
- 5.1。概述
- 5.2。編寫 HSA 內核
- 5.3。內存管理
- 5.4。編寫設備功能
- 5.5。支持的原子操作
- 5.6。代理商
- 5.7。 ROC Ufuncs 和廣義 Ufuncs
- 5.8。示例
- 6. 擴展 Numba
- 6.1。高級擴展 API
- 6.2。低級擴展 API
- 6.3。示例:間隔類型
- 7. 開發者手冊
- 7.1。貢獻給 Numba
- 7.2。 Numba 建筑
- 7.3。多態調度
- 7.4。關于發電機的注意事項
- 7.5。關于 Numba Runtime 的注意事項
- 7.6。使用 Numba Rewrite Pass 獲得樂趣和優化
- 7.7。實時變量分析
- 7.8。上市
- 7.9。模板注釋
- 7.10。關于自定義管道的注意事項
- 7.11。環境對象
- 7.12。哈希 的注意事項
- 7.13。 Numba 項目路線圖
- 8. Numba 增強建議
- 9. 術語表