python的进程间通信--共享内存

python的进程间通信--共享内存,第1张

概述最近看进程通信方式,刚好自己也在深入学习python,看到python支持共享内存。所以写下这篇笔记。python中,有一个 multiprocessing.shared_memory.SharedMemory类,用来创建和访问共享内存。以下是一个例子:创建共享内存部分,我们使用C代码,此处参考大大飞鱼老哥的代码: https://blog

最近看进程间通信方式,刚好自己也在深入学习python,看到python支持共享内存。所以写下这篇笔记。

python中,有一个 multiprocessing.shared_memory.SharedMemory类,用来创建和访问共享内存。

以下是一个例子:

创建共享内存部分,我们使用C代码,此处参考 大大飞鱼老哥的代码: https://blog.csdn.net/ababab12345/article/details/102931841

 1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/stat.h> 4 #include <fcntl.h> 5 #include <stdio.h> 6 #include <sys/mman.h> 7 #include <string.h> 8 #include <errno.h> 9 #include <unistd.h>10 11 #define MMAP_DATA_SIZE 102412 13 int main(int argc,char * argv[])14 {15     char * data;16     int fd = shm_open("/shm-file0001", O_CREAT|O_RDWR, 0777);17     18     if (fd < 0) {19         printf("shm_open Failed!\n");20         return -1;21     }22     23     ftruncate(fd, MMAP_DATA_SIZE);24     25     data = (char*)mmap(NulL, 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);26     if (!data) {27         printf("mmap Failed\n");28         close(fd);29     }30     31     32     sprintf(data,"This is a share memory! %d\n",fd);33     34     munmap(data,MMAP_DATA_SIZE);35     36     37     close(fd);38     getchar();39     40     shm_unlink("/shm-file0001");41     42     return 0;43 }
VIEw Code

 

通过xcode编译运行这段C代码:

 

 python代码部分我们只写一个共享内存的读取:

1 from multiprocessing import shared_memory2 3 if __name__ == '__main__':4     existing_shm = shared_memory.SharedMemory(name='shm-file0001')5     content = existing_shm.buf.tobytes()6     print(content)7     existing_shm.close()

 

最终python部分代码运行结果:

 

进一步,class multiprocessing.managers.SharedMemoryManager提供了一种比较方便的管理共享内存的方式。由SharedMemoryManager返回的sharedMemory,在sharedMemoryManager的shutdown()方法被调用后,都会自动清理掉,不用程序员再额外费心了。

总结

以上是内存溢出为你收集整理的python的进程间通信--共享内存全部内容,希望文章能够帮你解决python的进程间通信--共享内存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1187767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存