zoukankan      html  css  js  c++  java
  • 生产者消费者模型 守护线程

    守护线程

      守护线程会在主线程结束就立即结偶完成束,即使任务没有完成

      主线程会等待所有子线程全部完成最后结束

      结论 :守护线程会在所有非守护进程结束后结束

    from threading import Thread,current_thread
    import time 
    def task1():
      print("%s正在运行...."%current_thread().name)
      time.sleep(3)
      print("%s over...."%current_thread().name)

    def task2():

      print("%s 正在运行..."%current_thread().name)
      time.sleep(10)
      print("over...."%current_thread().name)
      

    t1 = Thread(target = task1)
    t2 = Thread(target = task2)

    t1.daemon = True #守护线程必须放在start前面
    t1.start()
    t2.start()

    print("over")

    生产者消费者模型

    例子:

    王思聪作为消费者 要吃热狗

    生产者负责做热狗

    问题是不知道:王思聪不清楚对方会生产多少热狗

    from multiprocessing import Process Queue,JoinableQueue
    import time,random

    def make_hot_dog():

      for i in range(1,6):
        time.sleep(random.randint(1,3))
        print('生产者  生产了hot_dog%s ' %i)

        q.put("hot_dog%s"%i)

    def eat_hot_dog():

      while True:

      time.sleep(random.randint(1,3))

      hot_dog = q.get()
      print("思聪吃了%s" %hot_dog)
      q.task_done()
    if __name__ =="__main__":

      q = JoinableQueue()
      p1 = Process(target = mak_hot_dog,args = (q,))

      p2 = Process(target = mak_hot_dog,args = (q,)
      p1.start()

      p2.start()
      #消费者

      c1 = Process(target = eat_hot_dog,args = (q,)
      c1.daemon = True
      c1.start()
      #要确定生产者不会再生产了

      p1.join()

      p2.join()

      print("生产已经结束了“)
      #再确定队列中的所有数据都被处理完成

      q.join()

      print("思聪已经全部吃完了“)

     

  • 相关阅读:
    Interesting Finds: 2008.09.15~2008.09.21
    Interesting Finds: 2008.10.05~2008.10.07
    Interesting Find: 2008.10.02
    Interesting Finds: 2008.10.13~2008.10.15
    Interesting Finds: 2008.09.29
    Interesting Finds: 2008.10.08~2008.10.09
    Interesting Finds: 2008.09.22~2008.09.27
    Interesting Finds: 2008.10.12
    Interesting Finds: 2008.10.16~2008.10.18
    9月27号
  • 原文地址:https://www.cnblogs.com/tangda/p/10519365.html
Copyright © 2011-2022 走看看