zoukankan      html  css  js  c++  java
  • python 多进程之管道实例(模板)

    原文地址:http://blog.chinaunix.net/uid-20393955-id-3084628.html

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
      
    import multiprocessing  
      
    # 管道消费者.  
    def consumer(lock,pipe):  
        output_p, input_p = pipe  
        input_p.close() # 关闭管道输入口  
        while True:  
        lock.acquire()              
        item = output_p.recv()  
        lock.release()  
        if item == None:      
                break  
              
            # 处理部分  
            lock.acquire()  
            print(item)  
            lock.release()  
      
    # 管道生产者  
    def producer(sequence, input_p):  
        for item in sequence:  
            # Put the item on the queue  
            input_p.send(item)  
              
    if __name__ == '__main__':  
          
        # 进程数、创建管道,锁等  
        p_num = 2  
        process = []      
        (output_p, input_p) = multiprocessing.Pipe()  
        lock = multiprocessing.Lock()  
          
        # 定义消费进程  
        for i in range(p_num):  
            t =multiprocessing.Process(target=consumer,args=(lock,(output_p, input_p),))        
            t.daemon=True  
            process.append(t)      
      
        # 启动消费进程  
        for i in range(p_num):  
            process[i].start()  
              
        # 关闭输出管道,以往管道填充数据  
        output_p.close()  
        sequence = range(100) + [None]*p_num     
        producer(sequence, input_p)      
        # 数据填充完毕,打开输入管道  
        input_p.close()  
          
        # 等待结束  
        for i in range(p_num):  
            process[i].join()  
    

      

  • 相关阅读:
    用户管理
    网线制作与分类
    5.虚函数,覆盖,多态,异常处理
    4.类的继承
    3.运算符重载
    7.STL
    6.泛型编程与模板
    C++中>>,<<的重载问题
    2.名字空间和构造函数
    1.C和C++的区别
  • 原文地址:https://www.cnblogs.com/fremcode/p/3437484.html
Copyright © 2011-2022 走看看