【发布时间】:2026-01-29 13:10:01
【问题描述】:
我想知道为什么 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()
【问题讨论】:
-
我们能看一些代码吗?这可能说明了 GC 不工作的原因。
-
添加了代码,实际上几乎是所有内容,在循环中,如果语句为真,我对文件进行 3 次操作。
-
您是否真的看过
top或任务管理器或任何适合您平台的东西? Python是否占用越来越多的内存? CPU是固定的吗?还是只是你的硬盘缓存被填满了? -
当它运行缓慢时,您查看过操作系统统计信息吗?想知道你是不是在换。那将表明存在 gc 问题。映射到
null的设置能否改善或解决您的问题?
标签: python performance memory mmap