python mmap内存映射,进程共享。
# coding=utf-8# python 3.7.9
# Cool_Breeze
# windows 进程间 通过内存映射(mmap),共享内存!
import mmap
import os
import sys
import time
import contextlib
from multiprocessing import Process
# 进程1 读取指定区域内存
def p1():
# contextlib.closing 自动关闭 mmap.mmap 返回的对象
with contextlib.closing(mmap.mmap(-1, 100, tagname='txt')) as m:
while True:
print(m.read(100))
m.seek(0)
# 进程2 写入指定区域内存
def p2(fn):
# 在子进程获取输入,需要传入主进程的 STDIN 文件描述符
sys.stdin = os.fdopen(fn)
with contextlib.closing(mmap.mmap(-1, 100, tagname='txt')) as m:
while True:
text = input('input:')
m.write(text.encode())
m.seek(0)
if __name__ == '__main__':
# 主进程 STDIN 文件描述符
fn = sys.stdin.fileno()
pro1 = Process(target=p1, daemon=True)
pro2 = Process(target=p2, args=(fn,), daemon=True)
pro1.start()
pro2.start()
pro1.join()
pro2.join() 感谢分享的代码 谢谢
页:
[1]