问题标签 [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.

0 投票
0 回答
618 浏览

python - 如果 Dill 文件对于 RAM 来说太大了,还有其他方法可以加载它吗

如果 dill 文件对 RAM 来说太大,是否可以用另一种方法加载它。例如,当我加载大约 1.2 GB 的序列化对象时,python3 会引发内存错误。

这不会通过,因为 RAM 太小。但是,是否可以以不同的方式加载它,以便在不使 RAM 过载的情况下提取数据?

0 投票
3 回答
4962 浏览

python - 使用 Dill 序列化 scikit-learn/statsmodels 模型的陷阱是什么?

我需要序列化 ​​scikit-learn/statsmodels 模型,以便将所有依赖项(代码 + 数据)打包在一个人工制品中,并且该人工制品可用于初始化模型并进行预测。使用 picklemodule不是一个选项,因为这只会处理数据依赖关系(代码不会被打包)。所以,我一直在用Dill进行实验。为了使我的问题更准确,以下是我构建模型并将其持久化的示例。

与此相对应,这是我如何初始化持久模型(在新会话中)并进行预测。请注意,此代码没有显式初始化或了解class Model.

有没有人用过莳萝是这样的?这个想法是让数据科学家为ModelWrapper class他们实现的每个模型扩展一个,然后围绕这个构建基础架构,以保持模型、将模型部署为服务并管理模型的整个生命周期。

除了安全隐患(任意代码执行)和模块scikit-learn必须安装在为模型服务的机器上的要求之外,这种方法是否存在任何其他缺陷?任何意见或建议将是最有帮助的。

我认为YHatDato采取了类似的方法,但出于类似目的推出了自己的 Dill 实现。

0 投票
2 回答
1437 浏览

python - 如何加快莳萝序列化以将 Python 对象存储到文件

它在文档中说 sys.getsizeof() 的输出以字节为单位。我正在尝试存储一个数据结构,它是类实例和列表的字典。我在这个类实例字典上做了 sys.getsizeof() ,它是 3352 字节。我正在使用 dill 对其进行序列化,以便稍后加载它,但这需要非常非常长的时间。

文件大小已经是 260 MB,远大于 sys.getsizeof() 指定的 3352 字节。有谁知道为什么值不同以及为什么需要这么长时间来存储?

在 4GB 内存的 Mac Air 上运行时,有没有更有效的方法来存储这样的对象?

这是一个不可思议的工具。我不确定是否有任何参数可以调整以帮助解决我的内存不足问题。我知道泡菜有一个协议=2,但它似乎不像莳萝那样存储环境。

0 投票
1 回答
103 浏览

python-3.x - 在python中序列化函数/类

我不知道如何序列化。从网上冲浪了解到,dill 可以序列化函数和类。我在下面有一个示例,其中有两个类,每个类都有一些具有不同参数的函数。我想将它们全部序列化。有人可以帮我解决这个问题吗

0 投票
2 回答
19377 浏览

python - `pickle`:又一个 `ImportError: No module named my_module`

我有一个MyClass定义在my_module. MyClass有一个方法pickle_myself可以腌制相关类的实例:

我已经确定my_modulePYTHONPATH. 在解释器中,执行__import__('my_module')工作正常:

但是,当最终加载文件时,我得到:

我已经确定的一些事情:


编辑——重现错误的玩具示例:

该示例本身分布在一堆文件中。

首先,我们有模块ball(存储在一个名为 的文件中ball.py):

然后,我们有模块test_environment

然后,我们有一个模块,它具有创建环境、持久化环境和加载环境的功能,称为make_persist_load

然后我们有一个脚本把它们放在一起,在test_serialization.py

为了使这个玩具示例更易于使用,我将其全部放在一个 Github 存储库中,只需将其克隆到您选择的目录中即可。. 请参阅README包含说明,我也在此处复制:

指示:

1)将存储库克隆到目录中。

2) 将存储库目录添加到 PYTHONPATH。

3) 打开test_serialization.py,并将变量设置MAKE_AND_PERSISTTrue。在解释器中运行脚本。

4) 关闭前一个解释器实例,并启动一个新实例。在test_serialization.py,更改MAKE_AND_PERSISTFalse,这将以编程方式设置LOADTrue。在解释器中运行脚本,导致ImportError: No module named test_environment.

5) 默认情况下,测试设置为使用 dill,而不是 pickle。为了改变这一点,进入test_environment.pymake_persist_load.py,根据需要改变进口。


编辑:切换到莳萝'0.2.5.dev0'后,dill.detect.trace(True)输出


编辑:玩具示例在 Mac/Ubuntu(即类 Unix 系统?)上运行时效果很好。它只在 Windows 上失败。

0 投票
1 回答
1908 浏览

python - 将 Dill 与适用于 Pickle 的代码一起使用时,“pickle 在帧结束前用尽”

我正在开发一个使用 Pickle 来实现存档游戏的游戏项目(我知道这样做的缺点——我们不在这里讨论)。这非常有效:不幸的是,标准 Pickle 无法处理我希望在未来版本中做的一些事情,所以我改用 Dill。不幸的是,它不起作用:它_pickle.UnpicklingError: pickle exhausted before end of frame在加载保存时给出。

重申一下:这段代码和我正在使用的测试用例与 Pickle 完美配合。只有莳萝有问题。

我正在像这样导入莳萝:

完整的回溯是这样的:

我什至不知道如何开始诊断。这是怎么回事?

编辑:

为了澄清,错误来自反序列化。

0 投票
3 回答
615 浏览

python - Python 的 pickle/cpickle/dill 可以加快导入速度吗?

可以使用 pickle/dill/cpickle 来腌制导入的模块以提高导入速度吗?例如,Shapely 模块在我的系统上需要 5 秒才能找到并加载所有必需的依赖项,我真的很想避免这种情况。

我可以腌制一次我的进口,然后重复使用该腌制而不是每次都进行缓慢的进口吗?

0 投票
1 回答
386 浏览

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”方法时,它给了我同样的错误

有人知道我做错了什么吗?

0 投票
2 回答
707 浏览

python - 钻孔错误。它在内置程序中找不到

我正在尝试 dill 一个存储在字典中的类对象,但由于某种原因我不能这样做。

澄清一下,x 是一个字符串,它是一个普通/简单的类定义,“Human”是类的名称。运行上面的代码时出现以下错误。

0 投票
1 回答
954 浏览

python - 莳萝:加载存储的对象时,得到`dispatch[key](self) KeyError: '\x7f'`

自从包维护者很好地回答了我的这个问题dill以来,我一直在使用。

然而,最近,在我的用例中,我收到以下错误:

这可能意味着什么?

我正在使用dillversion: '0.2.5',由pip install dill

我试过设置dill.detect.trace(True),但我没有得到任何输出。

编辑:这是一个不起作用的最小示例:

以及将它们组合在一起的代码:

产生的错误是: