試圖找出如何在使用jitclass時跳過一個類方法。Numba,Jitclass w/nopython模式和字典
有一個非常大的遞歸模型(非常多,一個巨大的for循環),其中 - 給定路徑相關的計算,不能用直Numpy矢量化。
類貫穿一系列numpy的陣列,通常numba友好的語法,但我有一個部分中調用了幾個以有序的方式方法:
def operations(self, i, ops_order_config):
ops_dict = self.ops_dict
for index in range(len(waterfall_config)):
try:
if isinstance(ops_config[index], tuple):
ops_dict[ops_config[index][0]](i, ops_config[index][1])
else:
ops_dict[ops_config[index]](i)
except KeyError:
pass
該模型的一部分對於靈活性非常重要 - 「config」是包含適當調用方法的元組的有序列表,以及相應的參數。 ops_dict擁有實際的自我。這是從配置調用,具有適當的參數。
如果我正在創建一個jitclass,有沒有什麼辦法可以跳過這個字典方面?
謝謝。當jitclass被使用並工作時,nopython模式被應用是否是一個安全的假設? – user7038639
@ user7038639是的。該類的所有方法都將以nopython模式編譯。 [docs](http://numba.pydata.org/numba-doc/dev/user/jitclass.html)明確提到它:「jitclass的所有方法都被編譯成nopython函數.jitclass實例的數據是在堆上分配爲C兼容結構,以便任何編譯函數都可以直接訪問底層數據,繞過解釋器。「 :) – MSeifert
布拉,通過這些文檔10次,似乎錯過了。謝謝! – user7038639