网络编程:进程创建--标准库multiprocessing模块(五--共享内存)

1、共享内存

  【1】在内存中开辟一段空间,存储数据,对过个进程可见。

  【2】每次写入共享内存中的内容都会覆盖之前的内容。

  【3】对内存的读操作页不会改变内存中的内容

from multiprocessing import Process,Value

2、开辟共享内存空间

  shm = Value(ctype,obj)

  功能: 开辟共享内存空间

  参数: ctype, 字符串 ,要转变的c的类型

      obj 共享内存的初始数据

  返回值 : 返回共享内存对象

  shm.value ,表示共享内存中的值

【mulPro-Value.py】
from
multiprocessing import Process,Value import time import random #创建共享内存 money = Value('i',6000) #存钱 def deposite(): for i in range(100): time.sleep(0.05) #对value的修改就是对共享内存的修改 money.value += random.randint(1,200) #花销 def withdraw(): for i in range(100): time.sleep(0.04) #对value的修改就是对共享内存的修改 money.value -= random.randint(1,200) d = Process(target = deposite) w = Process(target = withdraw) d.start() w.start() d.join() w.join() print(money.value)

 

from multiprocessing import Process,Array

3、开辟共享内存空间

  shm = Array(ctype,obj)

  功能 : 开辟共享内存空间

  参数 : ctype,要转换的数据类型

       obj,要存入共享内存的数据

        ① 列表、字符串 ,表示要存入的内容,要求类型相同

        ② 整数, 表示要开辟几个单元的空间

  返回值 : 返回共享内存对象,可迭代对象

【mulPro-Array.py】
from
multiprocessing import Process,Array import time #创建共享内存 shm = Array('c',b"hello") #字符类型要求是bytes #开辟5个整形单元的共享内存空间 # shm = Array('i',5) def fun(): for i in shm: print(i) shm[0] = b"H" p = Process(target = fun) p.start() p.join() print(shm.value) #从首地址打印字符串 # for i in shm: # print(i) #结果 b'h' b'e' b'l' b'l' b'o' b'Hello'

 

posted @ 2021-01-07 21:35  昱成  阅读(190)  评论(0编辑  收藏  举报