zoukankan      html  css  js  c++  java
  • 多进程

    代码1  Queue   (消息)队列

    利用put/get 进行添加和消耗

    由于多get了1次 ,end无法打印出,主程序等待。

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    #   mail: infaaf@126.com
    import  time
    import os
    
    from multiprocessing import Process,Queue,Manager
    
    
    def f(q, i):
        q.put(i)
    
    
    def f2():
        pass
    
    
    if __name__ == '__main__':
    
        q = Queue()
        q.put('a')
    
        for i in range(3):
            p=Process(target=f,args=(q,i))
            p.start()
    
    
        print(q.get())
        print(q.get())
        print(q.get())
        print(q.get())
        print(q.get())
        print('end')

    程序2 共享数据之 Manage

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    #   mail: infaaf@126.com
    import  time
    import os
    
    from multiprocessing import Process,Queue,Manager
    
    
    def f(q, i):
        q.put(i)
    
    
    def f2(d,d2,l,i):
        d['a']='aa'
        d['b']='bb'
        d2['222']=222   # 不报错,但是主程序d2={}
        l.append('11')
    
    
    if __name__ == '__main__':
    
        with Manager() as manager:   # 以下,都要写在with段落后
            d=manager.dict()
            l=manager.list(range(2))  #先初始化2个,也可以不初始化
            d2={}
    
            p_list=[]
    
            for i in range(3):
                p=Process(target=f2,args=(d,d2,l,i))
                p.start()
                p_list.append(p)
    
            for p in p_list:
                p.join()
    
            print(d)
            print(l)
            print(d2)
            
            

    结果

    {'a': 'aa', 'b': 'bb'}
    [0, 1, '11', '11', '11']
    {}

    Process finished with exit code 0

    以上2个例子,子进程,都需要通过传递消息Q 或者M。

  • 相关阅读:
    洛谷 P1578 奶牛浴场 题解
    LOJ167 康托展开 题解
    三校联训 【NOIP模拟】寻找
    洛谷 P1809 过河问题 题解
    有关多边形面积的总结
    LOJ 103 字串查找 题解
    洛谷 P2384 最短路 题解
    POJ 2492 A Bug's Life 题解
    LOJ 10214 计算器 题解
    洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解
  • 原文地址:https://www.cnblogs.com/infaaf/p/9291631.html
Copyright © 2011-2022 走看看