gpt4 book ai didi

Python 的 mmap() 性能随时间下降

转载 作者:行者123 更新时间:2023-11-28 21:28:55 25 4
gpt4 key购买 nike

我想知道为什么 Python 的 mmap() 性能会随着时间的推移而下降?我的意思是我有一个小应用程序,可以对 N 个文件进行更改,如果设置很大(不是太大,比如 1000),前 200 个文件的速度是恶魔速度,但之后它会变得越来越慢。看起来我应该偶尔释放内存,但不知道如何以及最重要的是为什么 Python 不自动执行此操作。

有什么帮助吗?

--编辑--

事情是这样的:

def function(filename, N):
fd = open(filename, 'rb+')
size = os.path.getsize(filename)
mapped = mmap(fd.fileno(), size)

for i in range(N):
some_operations_on_mmaped_block()

mapped.close()

最佳答案

您的操作系统将 mmap 的页面缓存在 RAM 中。从缓存中以 RAM 速度读取和写入。脏页最终会被刷新。在 Linux 上,除非您必须开始刷新页面,否则性能会很好,这是由 vm.dirty_ratio sysctl 变量控制的。一旦开始将脏页刷新到磁盘,读取将与繁忙的 IO 总线/设备上的写入竞争。另一件需要考虑的事情是您的操作系统是否有足够的 RAM 来缓存所有文件(顶部输出中的缓冲区计数器)。因此,我会在程序运行时观察“vmstat 1”的输出,并观察缓存/缓冲计数器的上升,直到突然开始执行 IO。

关于Python 的 mmap() 性能随时间下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6818054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com