问题标签 [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 - 在 python 中使用 dill 取消选中对象
我使用 dill 为我的整个工作区创建了一个泡菜文件 -
现在,我可以从这个泡菜文件中只取消选中的对象,而不是取消所有对象?
非常感谢!
multiprocessing - Pathos 多处理酸洗问题
我正在为我们在团队中进行的一些测试开发一个自动化框架。我们遇到了这个 Pickling 错误,在做了一些研究之后,我遇到了一些解决方案并查看了随附的 github 页面:
- Python多处理酸洗错误
- 多处理:如何在类中定义的函数上使用 Pool.map?
- python pathos 的酸洗问题<---从这个链接,我确认代码引用了正确的库。
- https://github.com/uqfoundation/pathos
我安装了 pathos 并相信我已经正确实现了它,但我仍然收到 Pickling 错误。这是示例代码和回溯:
test_start_callback 是一个工厂函数,用于生成不带参数的函数。我编辑了未使用的代码段。
我错过了其他 SO 链接中未提及的内容,或者我传递此函数的方式也不被 pathos 支持。
python-2.7 - 使用 Windows 10 在 python 2.7.13/14 上的 pathos cpickle 错误
基于使用 pathos 和 dill 的示例多进程,我遇到了 cPickle 错误。我像www3cam那样做;加上一点点……通过删除 pathos、dill、multiprocess 和 pyreadline。然后pip install pathos --no-cache-dir
小心地删除上面提到的那些侧包后点击。全新安装、冷重启 PC 以及稍后更新 Anacoda2……装有 cPickles 的罐子……还在,Frank Zappa 继续唱着他的“Titties and Beer”歌曲。
修改后的代码1:
也许应该像这里的示例“捕获和打印 PyQt5 回溯?
下面的代码片段让我思考和好奇是否必须为莳萝做类似的事情?
最新错误:
文件“c:\python\anac2\lib\site-packages\pathos\multiprocessing.py”,第 137 行,在地图中 return _pool.map(star(f), zip(*args)) # chunksize File “c:\ python\anac2\lib\site-packages\multiprocess\pool.py”,第 251 行,在 map 中返回 self.map_async(func, iterable, chunksize).get() 文件“c:\python\anac2\lib\site- packages\multiprocess\pool.py",第 567 行,在 get raise self._value cPickle.PicklingError: Can't pickle : attribute lookup builtin .function failed
有关此错误的更多信息位于:我的 cPickle 转储。
python-3.x - 使用 dill 保存类变量更改
我用 tkinter 编写了一个使用类作为结构的应用程序。目前我尝试实现一个“保存”功能,以便可以关闭应用程序,如果它重新启动,则决定是从头开始还是使用已经存在的 aka。腌制数据。
我读到了 pickle-module 及其无法保存类变量的弱点,所以我决定改用 dill-module。
我的问题: dill 保存了我的类变量的起始值,但是如果我让用户更改类变量(通过调用 classmethods),则不会保存更改。有什么办法可以用泡菜或莳萝模块做到这一点?
我创建了一个产生错误的最小示例。您可以看到,即使在调用更改变量的实例方法之后,实例变量的更改也会被保存。不幸的是,它不适用于类变量,它是相应的类方法:
python - 当在类范围内定义约束函数和参数时,类实例变得不可(莳萝)pickleable
为了诊断lmfit对象的dill unpickling 问题,我想尝试将我的约束函数定义包含在我稍后将 pickle 其实例的类中。但是,在类范围内定义约束函数的地方转储一个莳萝泡菜会引发(下面代码的第 (3) 节)。RuntimeError: maximum recursion depth exceeded
我想不出为什么会这样的直观原因。例如,如果我将一个类作用域函数填充到一个类作用域 OrderedDict 中,则该类实例仍然是dill可腌制的(下面代码的第 (1) 节)。
熟悉lmfit的人:知道为什么lmfit / asteval会触发这种行为吗?
那些熟悉 OOP 但不熟悉lmfit的人:对可能导致此类问题的代码类型有什么想法吗?
谢谢!
python - 加载包含函数字典的腌制(莳萝)文件
这是我之前提出的一个问题的后续:Loading functions in pickle file that uses class wrapper,我想在类 wrapper 下腌制一个函数字典,但类 wrapper 模块无法加载。
我已经解决了这个问题,dill
而不是pickle
:
我从 中删除了一些不必要的变量(涉及从数据创建 func_dict)globals()
,它们不是必需的,因为我只想使用 func_dict。
现在,当我使用以下方法加载腌制文件时:
我得到:
无法访问函数字典!我需要做什么才能获得预期的输出?
python - 写入泡菜时找到有问题的变量
我正在尝试使用dill
. 但我得到'NoneType' object is not callable
. 我不知道是什么物体导致了这个问题。那么有没有人有任何想法来调试和找到这个变量?
这是回溯:
python - 通过 pickle 或 dill 进行队列和管道序列化
有没有人有运气使用 pickle.dumps() 或 dill.dumps() 序列化 multiprocessing.Pipe() 或 multiprocess.Queue() 并成功将其加载回其原始形式。
我正在使用python 2.7。
例如,
python - 列表的Python多进程字典
我需要用 Python 3.6 在多进程中做一些事情。即,我必须更新一个添加对象列表的字典。由于这些对象是不可拾取的,我需要使用dill
而不是pickle
和multiprocess
frompathos
而不是multiprocessing
,但这不应该是问题。
将列表添加到字典需要在添加到字典之前重新序列化列表。这会减慢一切,并且与没有多处理所需的时间相同。你能给我一个解决方法吗?
这是我使用 python 3.6 的代码:
init1
工作但速度慢,init2
速度快但坏了。其余仅用于测试目的。
multithreading - 将 python3 程序与巨大的复杂对象并行化
介绍
我有一个用Python 3.6编写的相当复杂的 Python 程序(比如超过 5.000 行)。该程序解析超过 5.000 个文件的庞大数据集,处理它们创建数据集的内部表示,然后创建统计数据。由于我必须测试模型,我需要保存数据集表示,现在我正在通过使用序列化来完成dill
(在表示中有pickle
不支持的对象)。整个数据集的序列化,未压缩,大约需要 1GB。
问题
现在,我想通过并行化加速计算。完美的方法是多线程方法,但 GIL 禁止这样做。multiprocessing
模块(并且multiprocess
- 也是dill
兼容的)使用序列化在进程之间共享复杂对象,因此,在我设法发明的最佳情况下,由于数据集的巨大规模,并行化对我的时间性能影响很大。
问题
处理这种情况的最佳方法是什么?
我知道posh
,但它似乎只是x86
兼容的,ray
但它也使用序列化,gilectomy
(没有 gil 的 python 版本)但我无法使其并行化线程并且Jython
没有 GIL 但与 python 3 不兼容。 X。
我愿意接受任何替代方案,任何语言,无论它可能多么复杂,但我无法从头开始重写代码。