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("\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'__: 判断讲解的更多相关文章
- python中 __name__及__main()__的使用
python中 __name__及__main()__的使用 #hello.py def sayHello(): str="hello" print(str); if __name ...
- python中 __name__及__main()__的妙处
python中 __name__及__main()__的妙处 #hello.pydef sayHello(): str="hello" print(str); if __name_ ...
- Go语言学习之main包的讲解
### Go语言学习之main包的讲解 1.Go中main函数不支持任何返回值 2.可以通过os.Exit(0)来返回状态 func main(){ fmt.Println("hellow ...
- python中的if __name__=='__main__': main()解析
python中我们会看到一段代码是这样的: if __name__=='__main__': main() 这段代码的什么意思,我们可以知道代码的意思是如果__name__=='__main__'为T ...
- os.path.dirname( __ file __ ) 2018/6/2
os.path.dirname( __ file __ ) 2018/6/2 该测试脚本所在的位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py import os #该文件所在位 ...
- python __name__及__main()__的妙处
#hello.py def sayHello(): str="hello" print(str); if __name__ == "__main__": pri ...
- c/c++中main函数参数讲解
参考地址: http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实 ...
- 逆序对__归并排序__树状数组 Inversions SGU - 180
There are N integers (1<=N<=65537) A1, A2,.. AN (0<=Ai<=10^9). You need to find amount o ...
- python面向对象中的一些特殊__方法__
1. __doc__ 表示类的描述信息 class Foo: """ 描述类信息""" def func(self): pass print ...
随机推荐
- CF920E Connected Components?
CF luogu 先讲两个靠谱的做法 1.首先因为有n个点,m条不存在的边,所以至少存在一个点,和m/n个点之间没边,所以把这个点找出来,连一下其他相连的点,这样还剩m/n个点没确定在哪个联通块,而这 ...
- node里面的buffer理解
node提供了专门读写文件的模块,文件内容都是2进制存放在内存中的 node读取文件的结果都是16进制,那么你要学会进制转换,二进制0b开头 ,八进制0开头,十六进制0x 基础知识: 1字节=8bit ...
- producer发布消息
1.写入方式 producer采用push模式将消息发布到broker,每条消息都被append到patition中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障kafka吞吐率) 2.消息路 ...
- nginx常用指令
./nginx #打开 nginx nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx nginx -t #测试配置是否有语法错误 ngin ...
- 网址,域名,IP,主机名的区别
域名 通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名(又称为一级域名). 二级域名及其以上级别的域名,统称为子域名,有多少个点就是几级域名 顶级域名分为两类 ...
- Spring Cloud学习资料
博客 1.跟我学Spring Cloud 2.周立|Spring Cloud 3.Spring Cloud基础教程(强烈推荐) 4.Spring Cloud系列文章 5.forezp|史上最简单的 S ...
- Shiro入门 - 通过自定义Realm连数数据库进行认证
添加shiro-realm.ini文件 [main] #自定义Realm myRealm=test.shiro.MyRealm #将myRealm设置到securityManager,相当于Sprin ...
- 使用AOP思想无侵入式申请权限,解决组件化中权限问题(一)
首先介绍AspectJx使用 https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx 在根项目的build.gradle ...
- java中有哪4种整形数据类型?它们有什么不同之处?
java中有哪4种整形数据类型?它们有什么不同之处? (byte.short.int和long型)最大值和最小值都不一样.
- 解码base64加密的图片并打印到前台
经过base64加密的图片对象是一串字符串,我们解码后可通过流将其打印出来: utils类: package com.aebiz.app.web.modules.controllers.open.ap ...