退出时删除共享内存 [英] Shared memory deleted at exit
本文介绍了退出时删除共享内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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屋!
查看全文