当前位置: 首页 > 面试题库 >

joblib和pickle有哪些不同的用例?

屠君墨
2023-03-14
问题内容

背景:我刚刚开始使用scikit-learn,并在页面底部阅读了关于joblib和pickle的信息。

使用joblib替换pickle(joblib.dump和joblib.load)可能会更有趣,这在大数据上效率更高,但只能在磁盘而不是字符串中进行酸洗。


问题答案:
  • 通常,在大型numpy数组上,joblib明显要快得多, 因为它对numpy数据结构的数组缓冲区具有特殊的处理方式。要查找实现细节,您可以查看源代码。它还可以在使用zlib或lz4进行酸洗时动态压缩这些数据。
  • joblib还可以 在加载时对未压缩的Joblib腌制numpy数组的数据缓冲区 进行内存映射 ,从而可以在进程之间共享内存。
  • 如果您不腌制较大的numpy数组,则常规的腌制可能会显着加快,尤其是在大型python小对象集合 (例如,较大的str对象)上,因为标准库的pickle模块是在C中实现的,而joblib是纯python。
  • 由于PEP 574(Pickle协议5)已在Python 3.8中合并,因此使用标准库腌制较大的numpy数组现在效率更高(在内存方面和cpu方面)。在这种情况下,大型阵列意味着4GB或更多。
  • 但是 joblib在Python 3.8中仍然有用,可以 在内存映射模式下使用 加载具有嵌套numpy数组的对象mmap_mode="r"


 类似资料:
  • 我对不同类型的标识符案例以及人们对它们的称呼感兴趣。你知道这个名单上还有其他名字吗? :骆驼大小写(例如在java变量名中) :大写的骆驼大小写(例如在java类名中) :Snake大小写(例如在python变量名中) : Kebab大小写(例如球拍名称) :平面大小写(例如在java包名称) :大写(例如C常量名称)

  • 本文向大家介绍MyBatis 与 Hibernate 有哪些不同?相关面试题,主要包含被问及MyBatis 与 Hibernate 有哪些不同?时的应答技巧和注意事项,需要的朋友参考一下 Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要 程序员自己编写 Sql 语句 Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度

  • 本文向大家介绍有哪些不同类型的区块链?相关面试题,主要包含被问及有哪些不同类型的区块链?时的应答技巧和注意事项,需要的朋友参考一下 回答:下面列出了三种主要的区块链类型: 公共区块链:顾名思义,这里没有人负责,任何人都可以读/写/审核区块链。 私有区块链:顾名思义,它是个人或组织的私有财产。 财团或联合区块链:财团的选定成员可以读取/写入/审核区块链

  • 本文向大家介绍Selenium有哪些不同的等待类型?,包括了Selenium有哪些不同的等待类型?的使用技巧和注意事项,需要的朋友参考一下 下面列出了Selenium中可用的不同类型的等待- 隐式等待 这是Selenium中动态等待的一种,其语法为- 明确等待 这是Selenium中动态等待的一种,其语法为- 流利的等待 这是Selenium中动态等待的一种,其语法为- 静态等待 这用于将执行暂停

  • 请任何人解释Oracle中的锁定模式,即共享、独占和更新锁定。我找到了很多关于这个和那个的理论 共享锁:没有人可以改变数据,只读目的 独占锁定:只允许一个用户/连接更改数据。 更新锁:行被锁定,直到用户提交/回滚。 然后,我尝试共享以检查它的工作原理 然后,我发现,用户可以在共享锁定后更改数据。那么,它与独占锁和更新锁有什么不同呢。 另一个问题,更新锁和排他锁有什么不同,即使它们看起来几乎是等同的

  • 问题内容: 我知道这一个http://onjava.com/pub/a/onjava/2003/08/20/memoization.html,但是还有别的吗? 问题答案: 使用普通的简单类型安全Java来进行记忆也很容易。 您可以使用以下可重复使用的类从头开始。 我将它们用作缓存,其寿命是Web应用程序上的请求。 当然,如果您需要驱逐策略或更多功能(例如同步),请使用Guava 。 如果您需要记住