"""
王思聪作为消费者 要吃热狗
生产者 负责做热狗
问题:
王思聪不清楚对方会生产多少热狗 """
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("\033[46m生产者 生产了hot_dog%s\033[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()(终止消费者进程)
#王思聪就不需要在吃了

if __name__ == __'main'__: 判断讲解的更多相关文章

  1. python中 __name__及__main()__的使用

    python中 __name__及__main()__的使用 #hello.py def sayHello(): str="hello" print(str); if __name ...

  2. python中 __name__及__main()__的妙处

    python中 __name__及__main()__的妙处 #hello.pydef sayHello(): str="hello" print(str); if __name_ ...

  3. Go语言学习之main包的讲解

    ### Go语言学习之main包的讲解 1.Go中main函数不支持任何返回值 2.可以通过os.Exit(0)来返回状态 func main(){ fmt.Println("hellow ...

  4. python中的if __name__=='__main__': main()解析

    python中我们会看到一段代码是这样的: if __name__=='__main__': main() 这段代码的什么意思,我们可以知道代码的意思是如果__name__=='__main__'为T ...

  5. os.path.dirname( __ file __ ) 2018/6/2

    os.path.dirname( __ file __ ) 2018/6/2 该测试脚本所在的位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py import os #该文件所在位 ...

  6. python __name__及__main()__的妙处

    #hello.py def sayHello(): str="hello" print(str); if __name__ == "__main__": pri ...

  7. c/c++中main函数参数讲解

    参考地址: http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实 ...

  8. 逆序对__归并排序__树状数组 Inversions SGU - 180

    There are N integers (1<=N<=65537) A1, A2,.. AN (0<=Ai<=10^9). You need to find amount o ...

  9. python面向对象中的一些特殊__方法__

    1. __doc__ 表示类的描述信息 class Foo: """ 描述类信息""" def func(self): pass print ...

随机推荐

  1. 2017ICPC南宁 M题 The Maximum Unreachable Node Set【二分图】

    题意: 找出不能相互访问的点集的集合的元素数量. 思路: 偏序集最长反链裸题. 代码: #include<iostream> #include<cstring> using n ...

  2. 第20月第28天 tensorflow

    1. 505  sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade virtualenv 506   virt ...

  3. Vue项目在表单中限制输入数字

    <template> <div> <input v-model="userPhone" autofocus type="text" ...

  4. 高德地图 location字段控制台显示 为字符串类型 实际为对象

    help大神求指导 ? 高德地图new amap.PoiManager() 的 autoComplete方法 location字段控制台显示 为字符串类型 实际为对象 debugger过程入下图:

  5. animation属性

    文章中转站,因为涉及到动画效果,还是看文笔比较好的博主吧~ CSS3(三)Animation 入门详解 css3中变形与动画(三) CSS3 Animation 是由三部分组成. 关键帧(keyfra ...

  6. linux find 只获取文件名而去除路径

    find /var/process_log/ -name '*.log' -exec basename {} \;

  7. 【mmall】Jackson相关知识点

    Jackson fasterxml和codehaus的区别 (fasterxml vs. codehaus) http://blog.csdn.net/clementad/article/detail ...

  8. K - Video Reviews Gym - 101755K (二分)

    题目链接: K - Video Reviews Gym - 101755K 题目大意: 一家公司想让个人给他们的产品评论,所以依次去找这个人,第i个人会评论当且仅当已经有个人评论或他确实对这个产品感兴 ...

  9. 音乐app各部分笔记(一)

    7-11 播放器播放时间获取和更新 1.audio 有一个 ontimeupdate事件 播放过程中 随时触发 vue里面就是  @timeupdate   事件中有默认参数 e  通过e.targe ...

  10. Nginx系列0:Nginx学习历程

    Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...