You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python进程退出时共享内存被隐式解除链接的原因及规避方法

Python共享内存泄漏警告及文件消失的原因与解决方法

原因分析

  • Python的multiprocessing.resource_tracker组件负责追踪共享内存等跨进程资源。当程序退出时,若共享内存对象未被显式关闭,资源追踪器会判定为资源泄漏,触发警告,同时自动执行清理操作——解除链接并删除共享内存文件。
  • 你的测试代码仅创建了SharedMemory实例,但未调用close()方法释放当前进程对共享内存的引用。进程退出时,Python的资源回收机制会处理未关闭的共享内存对象,导致文件被删除。

解决方法

  • 显式关闭共享内存引用但保留文件:在程序结束前调用shm.close(),该操作仅释放当前进程对共享内存的访问权限,不会删除底层的共享内存文件,同时能避免资源追踪器判定为泄漏。
  • 修改后的代码示例:
#!/usr/bin/env python3.8

from multiprocessing import shared_memory
from time import sleep

PATH='/pth'

if __name__ == '__main__':
    shm = shared_memory.SharedMemory(PATH)
    try:
        sleep(10)
    finally:
        shm.close()  # 关闭当前进程的引用,保留共享内存文件
  • 额外说明:如果需要让共享内存文件长期存在,绝对不要调用shm.unlink()。只有当所有使用该共享内存的进程都已结束,且不再需要该文件时,才调用unlink()完成最终的资源清理。

内容的提问来源于stack exchange,提问作者Some Name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:20:57