退出时删除共享内存 [英] Shared memory deleted at exit

查看:15
本文介绍了退出时删除共享内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个脚本,一个用于创建和写入共享内存块,另一个用于读取该共享内存。 问题是,当第一个脚本结束时,即使我不解除它的链接,共享内存也会被删除。 这是我的第一个脚本:

import argparse
import csv
import os
import subprocess
import sys
import time

from classes.rtData import RtData
from multiprocessing import shared_memory

if '__main__' == __name__:
    sys.stdout.write('starting server ... 
')
    service = RtData()

    shm_a = shared_memory.SharedMemory(name='rtdata', create=True, size=len(msg))
    data = shm_a.buf
    data[0] = 42
    shm_a.close

添加断点时,可以看到共享内存已创建:

$ls-l/dev/shm/

合计0 -rw-1 Facundo Facundo 4 Sep 28 09:41 rtdata

但当脚本退出时,共享内存将被删除(因此我无法使用第二个脚本读取它)

推荐答案

我找到原因了。 The documentation states that

当一个进程不再需要访问其他进程可能仍然需要的共享内存块时,应调用close()方法

我已找到与此问题相关的此错误报告https://bugs.python.org/issue39959#msg368770

我已通过在消费过程中添加unregister( shared_memory_name, 'shared_memory')在我的过程中对其进行了测试,它运行良好。

这篇关于退出时删除共享内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆