问题标签 [dill]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如果 Dill 文件对于 RAM 来说太大了,还有其他方法可以加载它吗
如果 dill 文件对 RAM 来说太大,是否可以用另一种方法加载它。例如,当我加载大约 1.2 GB 的序列化对象时,python3 会引发内存错误。
这不会通过,因为 RAM 太小。但是,是否可以以不同的方式加载它,以便在不使 RAM 过载的情况下提取数据?
python - 使用 Dill 序列化 scikit-learn/statsmodels 模型的陷阱是什么?
我需要序列化 scikit-learn/statsmodels 模型,以便将所有依赖项(代码 + 数据)打包在一个人工制品中,并且该人工制品可用于初始化模型并进行预测。使用 picklemodule
不是一个选项,因为这只会处理数据依赖关系(代码不会被打包)。所以,我一直在用Dill进行实验。为了使我的问题更准确,以下是我构建模型并将其持久化的示例。
与此相对应,这是我如何初始化持久模型(在新会话中)并进行预测。请注意,此代码没有显式初始化或了解class Model
.
有没有人用过莳萝是这样的?这个想法是让数据科学家为ModelWrapper class
他们实现的每个模型扩展一个,然后围绕这个构建基础架构,以保持模型、将模型部署为服务并管理模型的整个生命周期。
除了安全隐患(任意代码执行)和模块scikit-learn
必须安装在为模型服务的机器上的要求之外,这种方法是否存在任何其他缺陷?任何意见或建议将是最有帮助的。
python - 如何加快莳萝序列化以将 Python 对象存储到文件
它在文档中说 sys.getsizeof() 的输出以字节为单位。我正在尝试存储一个数据结构,它是类实例和列表的字典。我在这个类实例字典上做了 sys.getsizeof() ,它是 3352 字节。我正在使用 dill 对其进行序列化,以便稍后加载它,但这需要非常非常长的时间。
文件大小已经是 260 MB,远大于 sys.getsizeof() 指定的 3352 字节。有谁知道为什么值不同以及为什么需要这么长时间来存储?
在 4GB 内存的 Mac Air 上运行时,有没有更有效的方法来存储这样的对象?
这是一个不可思议的工具。我不确定是否有任何参数可以调整以帮助解决我的内存不足问题。我知道泡菜有一个协议=2,但它似乎不像莳萝那样存储环境。
python-3.x - 在python中序列化函数/类
我不知道如何序列化。从网上冲浪了解到,dill 可以序列化函数和类。我在下面有一个示例,其中有两个类,每个类都有一些具有不同参数的函数。我想将它们全部序列化。有人可以帮我解决这个问题吗
python - `pickle`:又一个 `ImportError: No module named my_module`
我有一个MyClass
定义在my_module
. MyClass
有一个方法pickle_myself
可以腌制相关类的实例:
我已经确定my_module
在PYTHONPATH
. 在解释器中,执行__import__('my_module')
工作正常:
但是,当最终加载文件时,我得到:
我已经确定的一些事情:
我没有更改
my_module.py
(更改模块目录后的 Python 酸洗)的位置我尝试
dill
改用,但仍然得到相同的错误(更多关于 python ImportError No module named)
编辑——重现错误的玩具示例:
该示例本身分布在一堆文件中。
首先,我们有模块ball
(存储在一个名为 的文件中ball.py
):
然后,我们有模块test_environment
:
然后,我们有一个模块,它具有创建环境、持久化环境和加载环境的功能,称为make_persist_load
:
然后我们有一个脚本把它们放在一起,在test_serialization.py
:
为了使这个玩具示例更易于使用,我将其全部放在一个 Github 存储库中,只需将其克隆到您选择的目录中即可。. 请参阅README
包含说明,我也在此处复制:
指示:
1)将存储库克隆到目录中。
2) 将存储库目录添加到 PYTHONPATH。
3) 打开test_serialization.py
,并将变量设置MAKE_AND_PERSIST
为True
。在解释器中运行脚本。
4) 关闭前一个解释器实例,并启动一个新实例。在test_serialization.py
,更改MAKE_AND_PERSIST
为False
,这将以编程方式设置LOAD
为True
。在解释器中运行脚本,导致ImportError: No module named test_environment
.
5) 默认情况下,测试设置为使用 dill,而不是 pickle。为了改变这一点,进入test_environment.py
和make_persist_load.py
,根据需要改变进口。
编辑:切换到莳萝'0.2.5.dev0'后,dill.detect.trace(True)
输出
编辑:玩具示例在 Mac/Ubuntu(即类 Unix 系统?)上运行时效果很好。它只在 Windows 上失败。
python - 将 Dill 与适用于 Pickle 的代码一起使用时,“pickle 在帧结束前用尽”
我正在开发一个使用 Pickle 来实现存档游戏的游戏项目(我知道这样做的缺点——我们不在这里讨论)。这非常有效:不幸的是,标准 Pickle 无法处理我希望在未来版本中做的一些事情,所以我改用 Dill。不幸的是,它不起作用:它_pickle.UnpicklingError: pickle exhausted before end of frame
在加载保存时给出。
重申一下:这段代码和我正在使用的测试用例与 Pickle 完美配合。只有莳萝有问题。
我正在像这样导入莳萝:
完整的回溯是这样的:
我什至不知道如何开始诊断。这是怎么回事?
编辑:
为了澄清,错误来自反序列化。
python - Python 的 pickle/cpickle/dill 可以加快导入速度吗?
可以使用 pickle/dill/cpickle 来腌制导入的模块以提高导入速度吗?例如,Shapely 模块在我的系统上需要 5 秒才能找到并加载所有必需的依赖项,我真的很想避免这种情况。
我可以腌制一次我的进口,然后重复使用该腌制而不是每次都进行缓慢的进口吗?
python - Pythons 多进程模块(带莳萝)给出了无用的 AssertionError
我已经安装了 dill/pathos 及其依赖项(有一些困难),我正在尝试在多个进程中执行一个功能。类/属性Model(self.xml,self.exp_data,i).SSR
是定制的,并且依赖于其他自定义函数的负载,所以我提前为无法提供“可运行”代码道歉。然而,简而言之,它需要一些实验数据,将 ODE 系统与 python 的 pysces 模块集成并计算平方和 ( SSR
)。并行化此代码的目的是使用多个参数集加速此计算。
编码:
我得到的错误信息是:
然后我尝试使用map_async
:
它返回一个<multiprocess.pool.MapResult object at 0x0000000014AF8C18>
对象,当我尝试使用MapResult
“get”方法时,它给了我同样的错误
有人知道我做错了什么吗?
python - 钻孔错误。它在内置程序中找不到
我正在尝试 dill 一个存储在字典中的类对象,但由于某种原因我不能这样做。
澄清一下,x 是一个字符串,它是一个普通/简单的类定义,“Human”是类的名称。运行上面的代码时出现以下错误。
python - 莳萝:加载存储的对象时,得到`dispatch[key](self) KeyError: '\x7f'`
自从包维护者很好地回答了我的这个问题dill
以来,我一直在使用。
然而,最近,在我的用例中,我收到以下错误:
这可能意味着什么?
我正在使用dill
version: '0.2.5'
,由pip install dill
我试过设置dill.detect.trace(True)
,但我没有得到任何输出。
编辑:这是一个不起作用的最小示例:
以及将它们组合在一起的代码:
产生的错误是: