【问题标题】:Understanding the sync method from the python shelve library从 python shelve 库中理解同步方法
【发布时间】:2020-05-18 08:41:40
【问题描述】:

python 文档是这样描述同步方法的:

如果书架打开时写回缓存中的所有条目 回写设置为 True。同时清空缓存并同步 磁盘上的持久字典,如果可行的话。这就是所谓的 使用 close() 关闭书架时自动关闭。

我真的很难理解这一点。 从缓存访问数据与从磁盘访问数据有何不同? 清空缓存是否会影响我们访问存储数据的方式 在架子上?

【问题讨论】:

    标签: python shelve


    【解决方案1】:

    对于使用Shelve 对象中的数据的人来说,数据是被缓存还是在磁盘上是透明的。如果它不在缓存上,则读取文件,填充缓存并返回值。否则,使用缓存中的值。

    如果缓存在调用sync 时被清空,这意味着只有在从同一个 Shelve 实例中获取下一个值时,才会再次读取文件。由于都是自动的,所以没有区别。文档主要描述了它是如何实现的。

    如果您尝试使用两个并发应用程序打开同一个“搁置”文件,或者甚至在同一个程序上打开两个搁置实例,那么您很可能会遇到大问题。除此之外,它只是充当“持久字典”,仅此而已。

    这种写入磁盘并从单个文件重新读取的模式对于交互式程序中单个用户的工作负载没有任何影响。对于作为服务器运行的 Python 程序,具有数万到数千个客户端,甚至是单个大数据处理脚本,这可能会影响实际性能,无论如何,Shelve 几乎不是一个可用的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 2014-12-17
      相关资源
      最近更新 更多