Python与C++共享内存问题记录

可能的内存泄露导致程序退出时直接删除内存共享块:
resource_tracker.py:216: 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 ')
解决办法,不能直接使用close()函数,正确退出方法:

from multiprocessing import resource_tracker

if shm_a is not None:
    shm_a.close()
    resource_tracker.unregister(shm_a._name, "shared_memory")

手动关闭或者异常退出时上述问题依然存在,通过检测退出信号可以解决:

def handler(signal, frame):
    if shm_a is not None:
        shm_a.close()
        resource_tracker.unregister(shm_a._name, "shared_memory")

# 注册信号处理事件
signal.signal(signal.SIGINT, handler)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容