了解python shelve库中的sync方法

问题描述 投票:0回答:1

python文档说了有关sync方法的这句话:

如果架子用以下命令打开,则将所有条目写回缓存中写回设置为True。同时清空缓存并同步如果可行,请在磁盘上使用持久字典。这就是所谓的当使用close()关闭书架时,它会自动生成。

我真的很难理解这一点。从缓存访问数据与从磁盘访问数据有何不同?清空缓存是否会影响我们如何访问存储的数据搁置?

python shelve
1个回答
0
投票

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

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

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

这种写入磁盘并从单个文件重新读取的模式对于交互式程序中单个用户的工作负载没有任何区别。对于在服务器上运行具有成千上万个客户端的Python程序,甚至单个大数据处理脚本来说,这可能会影响实际性能,但Shelve并不是一件容易的事。

© www.soinside.com 2019 - 2024. All rights reserved.