zoukankan      html  css  js  c++  java
  • 内存共享

    通信原理:
      在内存中开辟一块空间,对多个进程可见,进程可以写入输入,但是每次写入的内容会覆盖之前的内容。

    函数方法:

    shm = Value(ctype,obj)
      功能: 开辟共享内存空间
      参数: ctype 字符串 要转变的c的类型
        obj 共享内存的初始数据
      返回值 : 返回共享内存对象
      *shm.value 即为共享内存值,对其修改即修改共享内存

    from multiprocessing import Process,Value
    import time
    import random
    
    #创建共享内存
    
    money = Value("i", 2000)
    
    #操作共享内存增加
    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)
            money.value -= random.randint(1,180)
    
    p1 = Process(target = deposite)
    p2 = Process(target = withdraw)
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    print("余额:",money.value)

    shm = Array(ctype,obj)
      功能 : 开辟共享内存空间
    参数 : ctype : 要转换的数据类型
        obj : 要存入共享内存的数据,比如列表,字符串
        如果是整数则表示开辟空间的个数
    返回值:返回共享内存对象
        *可以通过遍历获取每个元素的值
        e.g. [1,2,3] ---> obj[1] == 2
      * 如果存入的是字符串obj.value

    from multiprocessing import Process,Array
    import time
    
    #创建共享内存,初始放入列表
    #shm = Array("i", [1,2,3,4,5])
    
    #创建共享内存,开辟5个整形空间
    #shm = Array("i", 5)
    
    #存入字符串
    shm = Array("c", "Hello".encode())
    
    def fun():
        for i in shm:
            print(i)
        shm[0] = b"h"
    
    p = Process(target = fun)
    p.start()
    p.join()
    
    for i in shm:
        print(i)
    print(shm.value)
  • 相关阅读:
    吞吐量(TPS)、QPS、并发数、响应时间(RT)
    吞吐量(TPS)、QPS、并发数、响应时间(RT)
    ubuntu 14.04安装pycharm 社区版
    ubuntu 14.04安装pycharm 社区版
    卷积神经网络(4)----目标检测
    卷积神经网络(4)----目标检测
    卷积神经网络(4)----目标检测
    如何搭建自己CDN服务器
    flask
    s16 计算机网络基础
  • 原文地址:https://www.cnblogs.com/zengsf/p/9637952.html
Copyright © 2011-2022 走看看