我必须使用numba的字典(numba.typed.typeddict.Dict)类型来定义字典:
@njit
def init_numba_dict():
x = numpy.array([0], dtype=numpy.int32)
return {"01234-5": x[0], "0-1": x[0]}
myDict = init_numba_dict()
现在我需要将其保存到文件中。我认为以下代码可以工作:
import pickle
filehandler = open("file.dat", 'wb')
pickle.dump(myDict , filehandler, pickle.HIGHEST_PROTOCOL)
filehandler.close()
我收到此错误:“ TypeError:无法腌制_nrt_python._MemInfo对象”
有任何提示吗?如何将numba.typed.typeddict.Dict的内容保存和恢复到文件?
答案 0 :(得分:0)
很好的问题。我只是遇到了同样的错误并找到了解决方案。发生错误是因为numba(C语言)返回了一个指针,而不是数组或字典项之类的python之类的值。另一方面,泡菜要求一个python对象作为输入。因此,您要做的就是在使用dict()函数对其进行腌制之前,将numba dict更改为python dict对象。
import pickle
filehandler = open("file.dat", 'wb')
pickle.dump(dict(myDict), filehandler, pickle.HIGHEST_PROTOCOL)
filehandler.close()