zoukankan      html  css  js  c++  java
  • if __name__ == __'main'__: 判断讲解

    """
    王思聪作为消费者 要吃热狗
    生产者 负责做热狗
    问题:
    王思聪不清楚对方会生产多少热狗

    """
    from multiprocessing import Process,Queue,JoinableQueue
    import time,random

    # 生产者
    def make_hot_dog(q):
    for i in range(1,6):
    time.sleep(random.randint(1,3))
    print("33[46m生产者 生产了hot_dog%s33[0m" % i)
    q.put("hot_dog%s" % i)
    # 消费者
    def eat_hot_dog(q):
    while True:
    time.sleep(random.randint(1, 2))
    hot_dog = q.get()
    print("思聪吃了%s" % hot_dog)
    q.task_done()
    if __name__ == '__main__':#操作系统在创建子进程时 会把文件当做模块导出从头开始执行一遍当遇到if__name__ == '__main__'会判断,此时的__name__ 为模块文件名与main不相等所以不执行,
    从而避免了,操作系统不停地无线的循环开启子进程。
                    而且子进程只能在主进程中执行产生,需要几次创建几次,
    # 共享数据的队列
    q = JoinableQueue()
    # 生产者
    p1 = Process(target=make_hot_dog,args=(q,))#有了方法和数据(通过args=(q,)传参,只需要执行if __name__ =='__main__':上的函数方法就可以
    p2 = Process(target=make_hot_dog,args=(q,))
                                    #有了方法和数据(通过args=(q,)传参,只需要执行if __name__ =='__main__':上的函数方法就可以

    p1.start()
    p2.start()
    # 消费者
    c1 = Process(target=eat_hot_dog,args=(q,))
    c1.daemon = True
    c1.start()
    # print("完成了吗???")
    #先要确定生产者已经不会再生产了
    p1.join()
    p2.join()
    print("生产已经结束了...")
    #再确定队列中的所有数据都被处理完成
    q.join()
    print("思聪已经全部吃完了....")


    # c1.terminate()(终止消费者进程)
    #王思聪就不需要在吃了



  • 相关阅读:
    googlestyleguide
    利用安装光盘创建本地 yum 源补装 RPM 软件包
    串,并联电路的电阻,电流,电压,电功,电功率,电热的分配规律
    链接时如何选择C RunTime(CRT) library
    delphi函数参考手册
    QQ2006 界面编程
    DELPHI6 函数大全
    家庭照明电路设计
    IP地址转换成IP Number并得到国家
    两个或多个开关控制一盏灯的电器接线图
  • 原文地址:https://www.cnblogs.com/tangda/p/10491575.html
Copyright © 2011-2022 走看看