Python 共享内存泄漏

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

我在 multiprocessing.shared_memory.SharedMemory 上的

Python 文档网站
中运行了 Python 3.8 类的
first
示例。它按预期工作。但是,当我从 separate 脚本附加到共享内存时(creator scriptwait
30
秒进行 attachment),如下所示:

创作者脚本:

def main():
    shm_a = shared_memory.SharedMemory(create = True, size = 10)
    buffer = shm_a.buf
    buffer[:4] = bytearray([22, 33, 44, 55])
    buffer[4] = 100

    print(shm_a.name)

    sleep(30) # added to the example code
    shm_a.close()
    shm_a.unlink()

附件脚本:

def main():
    shm_b = shared_memory.SharedMemory('psm_2551129c') # psm_2551129c returned by the generator script
    array.array('b', shm_b.buf[:5])
    shm_b.buf[:5] = b'howdy'
    print(bytes(shm_b.buf[:5]))

    shm_b.close()

以下错误分别发生在attachercreator脚本

附件脚本错误:

ahmad@Ahmad-Laptop:~$ /usr/lib/python3.8/multiprocessing/resource_tracker.py:203: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown warnings.warn('resource_tracker: There appear to be %d '

创建者脚本错误:

/usr/lib/python3.8/multiprocessing/resource_tracker.py:203: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown warnings.warn('resource_tracker: There appear to be %d ' /usr/lib/python3.8/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: '/psm_7978b751': [Errno 2] No such file or directory: '/psm_7978b751' warnings.warn('resource_tracker: %r: %s' % (name, e))
请注意,

after attacher script 返回错误(并且 before creator script 返回),sudo lsof|grep -i psmoutput

 如下:

python3.8 13463 root DEL REG 0,24 3 /dev/shm/psm_2551129c python3.8 13463 root 3u REG 0,24 10 3 /dev/shm/psm_2551129c (deleted) python3.8 13463 root 4u REG 0,24 10 3 /dev/shm/psm_2551129c (deleted)

同一时间/dev/shm/psm_2551129c

存在(似乎在附件脚本返回后被删除)。
我该如何解决

这些错误?

这似乎是 Python 库中的一个错误。
python-3.x linux python-multiprocessing ipc shared-memory
1个回答
0
投票

看这个答案

该错误已报告在这里

看起来它将在计划于 2024 年 10 月发布的 Python 3.13 中修复(或解决),并且在“读取”过程中需要一个额外的参数track=True

虽然很容易重现这个问题,但我也发现它并不总是发生。

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