zoukankan      html  css  js  c++  java
  • 数据共享

    一、在进程间如何进行数据共享呢?

      1、我们需要导入一个模块:from multiprocessing import Manager

      2、Manager把所有实现了数据共享的比较便捷的类都重新又封装了一遍,并且在原有的multiprocessing的基础上增加了新的机制 list dict

    二、数据共享的机制的特点:

      1、支持数据类型非常有限

      2、list dict 都是数据不安全的,你需要自己加锁来保证数据安全

    实例代码:

    from multiprocessing import Manager,Process,Lock
    def work(d,lock):
        with lock:    
            d['count']-=1
    
    if __name__ == '__main__':
        lock=Lock()
        m = Manager()      # with Manager() as m
        dic=m.dict({'count':100})
        p_l=[]
        for i in range(100):
            p=Process(target=work,args=(dic,lock))
            p_l.append(p)
            p.start()
        for p in p_l:
            p.join()
        print(dic)
    结果为:
    {'count': 0}
     with。。。
    一大段语句
    dis模块
    python的上下文管理
       在执行一大段语句之前 自动做某个操作 open
       在执行一大段语句之后 自动做某个操作 close

    with lock ---> lock.acquire() lock.release()
  • 相关阅读:
    LeetCode-6 ZigZag Conversion
    求两个字符串的最长公共子串
    Eclipse 添加 javap
    时间复杂度
    leetcode oj-3
    Android Rom分区 与 SD卡读写
    论文首次处理流程及代码
    论文片段
    项目整体流程
    春晚项目中的相关脚本
  • 原文地址:https://www.cnblogs.com/youhongliang/p/9699970.html
Copyright © 2011-2022 走看看