了解 python 搁架库中的同步方法



python文档对同步方法是这样说的:

如果磁盘架是用 写回设置为 True。同时清空缓存并同步 磁盘上的持久字典(如果可行(。这称为 使用 close(( 关闭搁板时自动。

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

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

如果在调用sync时清空缓存,则仅意味着在从同一 Shelve 实例获取的下一个值上,将再次读取该文件。由于都是自动的,因此没有区别。文档主要描述它是如何实现的。

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

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

最新更新