繁体   English   中英

为什么 dict 类型的变量内容不能腌制?

Why a dict type variable content cannot be pickled?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我必须使用 numba 的 dict (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 的内容保存和恢复到文件中?

1 个回复

好问题。 我刚刚遇到同样的错误并找到了解决方案。 发生错误是因为 numba(C 语言)返回一个指针,而不是数组或字典中的 python 之类的值。 另一方面,pickle 要求输入 python object 作为输入。 因此,您需要做的就是在使用 dict() function 酸洗之前将 numba dict 更改为 python dict object。

import pickle
filehandler = open("file.dat", 'wb') 
pickle.dump(dict(myDict), filehandler, pickle.HIGHEST_PROTOCOL)
filehandler.close()
1 dict对象如何被腌制?

在阅读了pickle文档之后,我得到了一个印象,即一个类需要实现__reduce__或__getstate__来正确地进行pickle。 但是,字典的酸洗工作呢? 他们没有任何这些属性: 另外,从dict派生的类是如何被腌制的? ...

2 如何腌制从dict派生的python对象

这是我需要腌制的班级: 在我看来, __reduce__应该照顾酸洗,但是: 我也应该定义__getstate__吗? 我对可用于自定义酸洗的所有这些多种方法完全迷失了: __getinitargs__ , __getstate__ , __reduce__等等。 Goo ...

6 腌制预设变量

好的,基本上我想实现的是在第一次运行程序时将MaTC,AnTC,AuTC,AlTC和JaTC变量预设为1、2、3、3和3。 但是,当我想添加2来表示MaTC使其成为3时,当我再次启动程序时,我希望它在启动时= 3。 我几天前才刚开始使用python,我希望收到反馈! ...

7 腌制所有变量

我正在寻找一种方法来按排序顺序腌制所有变量及其值。我正在尝试以下方法: 预期结果: va的 Append 值到totalList ,然后vb's值..等等。 然后将totalList转储到 pickle 文件中。 我得到这样的结果: 我想摆脱结果('pickle', 'time', 'os', 'r ...

8 删除已腌制的变量

在使用Python时,我并不十分熟练,但是我确实让自己陷入了困境。 撇开双关语,我正在使用Tkinter,并且有一个特殊的函数让我轻松保存所有全局变量: 基本上,我们正在研究尝试之后的结果:它将所有全局内容保存到用户选择的文件中。 现在,我知道无法保存Tkinter窗口小部件,但是我 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM