zoukankan      html  css  js  c++  java
  • python-day33--进程间通信(IPC)

    方式:队列(推荐使用)

    一、基本情况

    1.可以往队列里放任意类型的数据

    2. 队列:先进先出

    3.

    q=Queue(3)        #可以设置队列中最多可以进入多少个值,也可以不设置
    q.put('first')
    q.put('second')
    q.put('third')
    # q.put('fourht')    #当设置最多进入3个值时,第四个值过来时就会卡住,只有当第一值     被取出去的时候,第四个值才会进入
    
    print(q.get())
    print(q.get())
    print(q.get())
    # print(q.get())   #当队列中有三个值,而想去取第四个值的时候,也会卡住,只有队列中进入了第四个值的时候才往下运行
    View Code

    4.生产者消费者模型

      1 #生产者消费者模型1
      2 # from multiprocessing import Process,Queue
      3 # import time
      4 # import random
      5 # import os
      6 # def consumer(q):
      7 #     while True:
      8 #         res=q.get()
      9 #         if res is None:
     10 #             break
     11 #         time.sleep(random.randint(1,3))
     12 #         print('33[45m%s 吃了 %s33[0m' % (os.getpid(), res))
     13 # def producer(q):
     14 #     for i in range(5):
     15 #         time.sleep(2)
     16 #         res='包子%s' %i
     17 #         q.put(res)
     18 #         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
     19 #     q.put(None)
     20 # if __name__ == '__main__':
     21 #     q=Queue()
     22 #     #生产者们:厨师们
     23 #     p1=Process(target=producer,args=(q,))
     24 #
     25 #     #消费者们:吃货们
     26 #     p2=Process(target=consumer,args=(q,))
     27 #
     28 #     p1.start()
     29 #     p2.start()
     30 #     p1.join()
     31 #     p2.join()
     32 #     print('主')
     33 
     34 
     35 # #生产者消费者模型2
     36 # from multiprocessing import Process,Queue
     37 # import time
     38 # import random
     39 # import os
     40 # def consumer(q):
     41 #     while True:
     42 #         res=q.get()
     43 #         if res is None:break
     44 #         time.sleep(random.randint(1,3))
     45 #         print('33[45m%s 吃了 %s33[0m' % (os.getpid(), res))
     46 #
     47 # def product_baozi(q):
     48 #     for i in range(3):
     49 #         time.sleep(2)
     50 #         res='包子%s' %i
     51 #         q.put(res)
     52 #         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
     53 #
     54 #
     55 # def product_gutou(q):
     56 #     for i in range(3):
     57 #         time.sleep(2)
     58 #         res='骨头%s' %i
     59 #         q.put(res)
     60 #         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
     61 #
     62 #
     63 # def product_ganshui(q):
     64 #     for i in range(3):
     65 #         time.sleep(2)
     66 #         res='泔水%s' %i
     67 #         q.put(res)
     68 #         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
     69 # if __name__ == '__main__':
     70 #     q=Queue()
     71 #     #生产者们:厨师们
     72 #     p1=Process(target=product_baozi,args=(q,))
     73 #     p2=Process(target=product_gutou,args=(q,))
     74 #     p3=Process(target=product_ganshui,args=(q,))
     75 #
     76 #     #消费者们:吃货们
     77 #     p4=Process(target=consumer,args=(q,))
     78 #     p5=Process(target=consumer,args=(q,))
     79 #
     80 #     # p_l=[p1,p2,p3,p4,p5]
     81 #     # for p in p_l:
     82 #     #     p.start()
     83 #     #
     84 #     # for p in p_l:
     85 #     #     p.join()
     86 #
     87 #
     88 #     p1.start()
     89 #     p2.start()
     90 #     p3.start()
     91 #     p4.start()
     92 #     p5.start()
     93 #
     94 #
     95 #     p1.join()
     96 #     p2.join()
     97 #     p3.join()
     98 #     q.put(None)
     99 #     q.put(None)
    100 #     p4.join()
    101 #     p5.join()
    102 #
    103 #     print('主')
    104 
    105 
    106 
    107 
    108 # #生产者消费者模型3
    109 # from multiprocessing import Process,JoinableQueue
    110 # import time
    111 # import random
    112 # import os
    113 # def consumer(q):
    114 #     while True:
    115 #         res=q.get()
    116 #         time.sleep(random.randint(1,3))
    117 #         print('33[45m%s 吃了 %s33[0m' % (os.getpid(), res))
    118 #         q.task_done()
    119 #
    120 # def product_baozi(q):
    121 #     for i in range(5):
    122 #         time.sleep(2)
    123 #         res='包子%s' %i
    124 #         q.put(res)
    125 #         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
    126 #     q.join()
    127 #
    128 # if __name__ == '__main__':
    129 #     q=JoinableQueue()
    130 #     #生产者们:厨师们
    131 #     p1=Process(target=product_baozi,args=(q,))
    132 #
    133 #     #消费者们:吃货们
    134 #     p4=Process(target=consumer,args=(q,))
    135 #     p4.daemon=True
    136 #
    137 #     p1.start()
    138 #     p4.start()
    139 #
    140 #     p1.join()
    141 #     print('主')
    142 #     #p2结束了
    143 
    144 
    145 
    146 
    147 #生产者消费者模型4
    148 from multiprocessing import Process,JoinableQueue
    149 import time
    150 import random
    151 import os
    152 def consumer(q):
    153     while True:
    154         res=q.get()
    155         time.sleep(random.randint(1,3))
    156         print('33[45m%s 吃了 %s33[0m' % (os.getpid(), res))
    157         q.task_done()
    158 
    159 def product_baozi(q):
    160     for i in range(3):
    161         time.sleep(2)
    162         res='包子%s' %i
    163         q.put(res)
    164         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
    165     q.join()
    166 
    167 def product_gutou(q):
    168     for i in range(3):
    169         time.sleep(2)
    170         res='骨头%s' %i
    171         q.put(res)
    172         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
    173     q.join()
    174 
    175 def product_ganshui(q):
    176     for i in range(3):
    177         time.sleep(2)
    178         res='泔水%s' %i
    179         q.put(res)
    180         print('33[44m%s 制造了 %s33[0m' %(os.getpid(),res))
    181     q.join()
    182 if __name__ == '__main__':
    183     q=JoinableQueue()
    184     #生产者们:厨师们
    185     p1=Process(target=product_baozi,args=(q,))
    186     p2=Process(target=product_gutou,args=(q,))
    187     p3=Process(target=product_ganshui,args=(q,))
    188 
    189     #消费者们:吃货们
    190     p4=Process(target=consumer,args=(q,))
    191     p5=Process(target=consumer,args=(q,))
    192     p4.daemon=True
    193     p5.daemon=True
    194 
    195     p_l=[p1,p2,p3,p4,p5]
    196     for p in p_l:
    197         p.start()
    198 
    199     p1.join()
    200     p2.join()
    201     p3.join()
    202 
    203     print('')
    生产者消费者模型进阶
  • 相关阅读:
    Redis(八):spring data redis 理解
    RPC服务框架dubbo(六):Consumer搭建过程
    Redis(七):Jedis简介和集群
    RPC服务框架dubbo(四):Dubbo中Provider搭建
    RPC服务框架dubbo(三):Dubbo支持的协议
    RPC服务框架dubbo(二):dubbo支持的注册中心
    RPC服务框架dubbo(一):简介和原理解析
    Java数据结构和算法(一):简介
    Golang gRPC实践 连载五 拦截器 Interceptor
    Go 1.8 http graceful 体验
  • 原文地址:https://www.cnblogs.com/liuwei0824/p/7428861.html
Copyright © 2011-2022 走看看