Python Window下共享内存读写

人走茶凉 提交于 2020-02-17 13:09:21
# 导入win32的包
import win32event as w32e 
import mmapfile as mmf 
# 创建共享内存
fileMemory = mmf.mmapfile(None, 'ai_and_imghandle_shareMem', 1024*1024*2)
# 创建读事件 hReadEvent 和 写时间 hWriteEvent:创建时判断系统是否已经有该事件
hReadEvent, hWriteEvent = None, None
try:
    hReadEvent = w32e.OpenEvent(w32e.EVENT_ALL_ACCESS , 0, "Global\\readEventHandle")
    hWriteEvent = w32e.OpenEvent(w32e.EVENT_ALL_ACCESS , 0, "Global\\writeEventHandle")
except Exception as e:
    print('Excep: ', e)
    hReadEvent = w32e.CreateEvent(None, 0, 0, "Global\\readEventHandle")
    hWriteEvent = w32e.CreateEvent(None, 0, 0, "Global\\writeEventHandle")
# 数据写入内存
fileMemory.seek(0) # 游标移至0
fileMemory.write(img_path.encode(encoding='utf-8')) # 对数据进行编码
fileMemory.write('\0\0\0'.encode(encoding='utf-8')) # 输入\0终止符
# 触发Write事件,通知其他进程可读取共享内存的数据
w32e.SetEvent(self.hWriteEvent)
# 等待Read事件的触发
w32e.WaitForSingleObject(self.hReadEvent, -1)
# 触发后读取新内存
fileMemory.seek(0)
buf = fileMemory.read(1024*1024*2)
# 解析数据, 设置erros忽略部分错误
result = buf.decode(encoding = "utf-8", errors='ignore').strip("\0")
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!