zoukankan      html  css  js  c++  java
  • Python网编_进程间的数据共享

    Manager提供了很多数据共享机制,但是对于一些基础数据类型来说,是数据不安全的,那么Q:如何解决呢?
    A: 需要我们自己手动加锁
    from multiprocessing import Manager,Process,Lock  # Process开子进程用,Lock数据加锁用,Manager进程间数据共享用
    def work(d,lock):
        # lock.acquire()
        # d['count'] -= 1
        # lock.release()
        with lock:  # 上下问管理  注意了lock锁的并不是'count'这个数据 而是d['count'] -= 1这句代码
            d['count'] -= 1  # 这句之前的上文是lock.acquire()下文是lock.release()
    
    
    if __name__ == '__main__':
        lock = Lock()
        m = Manager()  # 实例化一个m
        dic = m.dict({'count':100})  # 调用m的dict方法
        p_l = []
        for i in range(100):
            p = Process(target=work,args=(dic,lock))
            p.start()
            p_l.append(p)
        for p in p_l:
            p.join()
        print(dic)
    执行结果:
    0
    进程间默认是数据隔离的,所以一般不会写数据共享,即使要写,使用队列的数据安全性更好一些,一般不用Manager。
  • 相关阅读:
    LeetCode 4 :Majority Element
    LeetCode 3 :Min Stack
    Oracle操作4
    plsql安装教程
    java Date与String互相转化
    Oracle操作3
    Oracle操作2
    Oracle操作
    Oracle11g修改密码
    Visual Studio2013完全卸载
  • 原文地址:https://www.cnblogs.com/gzying-01/p/10375218.html
Copyright © 2011-2022 走看看