ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Python与CSharp之间内存共享互传信息

2021-12-30 18:37:02  阅读:201  来源: 互联网

标签:SHMEMSIZE file Python mmap 互传 str CSharp byte 共享内存


C#写入字符串到共享内存

try
{
    long t = 1 << 10 << 10;
    var mmf = MemoryMappedFile.CreateOrOpen("test1", t, MemoryMappedFileAccess.ReadWrite);
    var viewAccessor = mmf.CreateViewAccessor(0, t);
    string s = "123";
    viewAccessor.Write(0, s.Length); ;
    viewAccessor.WriteArray<byte>(0, System.Text.Encoding.Default.GetBytes(s), 0, s.Length);
    // MessageBox.Show("write ok");
}
catch (System.Exception s)
{
    MessageBox.Show(s.Message);
}

Python从共享内存中读取

import mmap
str = '123'
byte = str.encode()
SHMEMSIZE = len(str)
file_name = 'test1'
print(SHMEMSIZE)
# python读取共享内存
shmem = mmap.mmap(0, SHMEMSIZE, file_name, mmap.ACCESS_READ)
print(shmem.read(SHMEMSIZE).decode('ASCII'))
shmem.close()


Python写入字符串到共享内存

import mmap
str = '123456'
byte = str.encode(encoding='UTF-8')
SHMEMSIZE = len(str)

file_name = 'global_share_memory'
print(file_name)

# python写入共享内存
shmem = mmap.mmap(0, SHMEMSIZE, file_name, mmap.ACCESS_WRITE)
shmem.write(byte)

while True:
    pass

C#从共享内存中读取

long capacity = 6;
var mmf = MemoryMappedFile.OpenExisting("global_share_memory");
MemoryMappedViewAccessor viewAccessor = mmf.CreateViewAccessor(0, capacity);
char[] charsInMMf = new char[6];
byte test = viewAccessor.ReadByte(0);
byte test2 = viewAccessor.ReadByte(1);
byte test3 = viewAccessor.ReadByte(2);
byte test4 = viewAccessor.ReadByte(3);

标签:SHMEMSIZE,file,Python,mmap,互传,str,CSharp,byte,共享内存
来源: https://www.cnblogs.com/supersdar/p/15750022.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有