python多线程异步 简单小栗子(包子大战)

#coding:utf-8
import threading
import time

def producer():
    print u‘tantianran: 等人来买包子...‘
    event.wait() #一开始为阻塞,如果检测到标志位被设置成了true(标志位默认是flase),则继续往下执行
    event.clear() #将标志位设置回flase
    print u‘tantianran: 生产包子中...‘
    time.sleep(5)
    print u‘tantianran: 催你妹啊!你的包子做好了...‘
    event.set()  # 设置标志位为true,通知线程t2,包子做好了

def consumer():
    print u‘tanzhenxing: 去买包子...‘
    event.set() #设置标志位为true,通知t1线程要去买包子

    time.sleep(2)
    while True:
        if event.isSet():
            print u‘tanzhenxing: 买到包子了,包子真好吃...谢谢!‘
            break
        else:
            print u‘tanzhenxing: 包子还尼马没做好?‘
            time.sleep(2)

if __name__ == ‘__main__‘:
    event = threading.Event()

    t1 = threading.Thread(target=producer)
    t2 = threading.Thread(target=consumer)
    t1.start()
    t2.start()

执行结果:

/usr/bin/python2.7 /home/toby/PycharmProjects/test-20170419/01.py
tantianran: 等人来买包子...
tanzhenxing: 去买包子...
tantianran: 生产包子中...
tanzhenxing: 包子还尼马没做好?
tanzhenxing: 包子还尼马没做好?
tantianran: 催你妹啊!你的包子做好了...
tanzhenxing: 买到包子了,包子真好吃...谢谢!

时间: 2024-10-13 16:42:40

python多线程异步 简单小栗子(包子大战)的相关文章

使用python多线程进行简单的性能测试

步骤: *定义请求函数 *把请求函数添加进入多线 参考代码: 1 import threading 2 import time 3 import requests 4 5 # 获取毫秒级时间 6 def get_time_ms(): 7 ct = time.time() # 时间戳 8 local_time = time.localtime(ct) # 本地化时间 9 cart_time_strftime = time.strftime("%Y-%m-%d %H:%M:%S", loc

freemarker 页面静态化 简单小栗子

====================================================================== ====================================================================== ==============================新建java项目     下面项目目录结构是完成静态化之后,生成之前没有hello.html================================

生产者消费者模型实现多线程异步交互

[Python之旅]第六篇(五):生产者消费者模型实现多线程异步交互 消息队列 生产者消费者模型 多线程异步交互 摘要:  虽然标题是"生产者消费者模型实现多线程异步交互",但这里要说的应该还包括Python的消息队列,因为这里多线程异步交互是通过Python的消息队列来实现的,因此主要内容如下: 1 2 3 4 1.生产者消费者模型:厨师做包子与顾客吃包子 2.Python的消息队列 3.利用... 虽然标题是"生产者消费者模型实现多线程异步交互",但这里要说的应

python idle一些简单的小技巧

编辑状态时:Ctrl + [ .Ctrl + ] 缩进代码Alt+3 Alt+4 注释.取消注释代码行Alt+5 Alt+6 切换缩进方式 空格<=>TabAlt+/ 单词完成,只要文中出现过,就可以帮你自动补齐.多按几次可以循环选择Alt+M 打开模块代码,先选中模块,然后按下此快捷键,会帮你打开改模块的py源码供浏览Alt+C 打开类浏览器,方便在源码文件中的各个方法体之间切换Alt+FP 打开路径浏览器,方便选择导入包进行查看浏览F1 打开Python文档,比Editplus 方便吧,不

Python 多线程就这么简单

来源:Linux社区  作者:StitchSun 多线程和多进程是什么自行google补脑 对于Python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的MS-DOS时代,操作系统处理问题都是单任务的,我想做听音乐和看电影两件事儿,那么一定要先排一下顺序. (好吧!我们不纠结在DOS时代是否有听音乐和看影的应用.^_^) 1 from time import ctime,sleep 2 3 def m

dwr框架异步调用简单小例

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架.可以轻松实现用js直接调用java方法. 通过一个小例子来演示一个dwr的基本使用: ①. 首先肯定要创建一个web project的,然后拷贝dwr.jar到WEB-INF\lib目录下 ②. 修改web.xml文件,添加dwr servlet配置 <servlet> <servlet-name>dwr-invoker</servlet-name>

python写的第一个简单小游戏-猜数字

1 #Filename:game1.py 2 3 guess=10 4 running=True 5 while running: 6 try: 7 answer=int(raw_input('Guess what i think:')) 8 except: 9 print 'Please input interga\n' 10 continue 11 12 if answer<guess: 13 print 'Your answer is too small\n' 14 continue 15

自学(系统学)Python了那么久, 想就业? 几个简单小项目让你通过面试!

本人从事Python开发多年,精通爬虫,web,熟悉其他方向,好多小伙伴私聊我说,我看了你的文章后,我学习了,但是对于项目这块还是不是很熟悉,如何快速掌握几个小项目,以及几个可以面试的项目.欢迎大家订阅公众号:Python从程序猿到程序员,,,或者骚扰本人.154725.1666,可以获得一次答疑机会. Python是一个比较完善的开发语言,既能做验证模型又能做落地项目,所以Python用来写大型项目是没有问题的.而且Python作为Web开发的三大传统解决方案之一,在Web开发领域也有很多经典

python多线程爬虫的简单例子

Python多线程(http://www.maiziedu.com/course/python/)主要是通过thread和threading这两个模块来实现的.thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用. 虽然python的多线程受GIL限制,并不是真正的多线程,但是对于I/O密集型计算还是能明显提高效率,比如说爬虫. 下面用一个实例来验证多线程的效率.代码只涉及页面获取,并没有解析出来. # -*-coding:utf-8 -*-