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()(终止消费者进程)
#王思聪就不需要在吃了



转载于:https://www.cnblogs.com/tangda/p/10491575.html

在Python中,if __name__ == '__main__': 是一个常见的条件语句。它的作用是判断当前模块是否被直接执行,而不是被导入到其他模块中。如果一个模块是作为主程序执行的,那么__name__的值就是'__main__',条件为真,所以if语句块中的代码会被执行。如果一个模块是被导入到其他模块中的,那么__name__的值就是模块的名称,条件为假,if语句块中的代码不会被执行。这样做的目的是为了让模块既可以被导入到其他模块中使用,又可以作为独立的脚本执行。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [if __name__ == ‘__main__‘的详细讲解](https://blog.youkuaiyun.com/yawei_liu1688/article/details/108597939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [if __name__ == ‘__main__‘详细解释及实操演示](https://blog.youkuaiyun.com/qq_35700085/article/details/130982655)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值