[python 学习] python 多线程
1、
# -*- coding: utf-8 -*-
import threading
import time
import random def go(name):
for i in range(2):
integer = random.randint(0,10)
print u'{} 前进{} 步.'.format(name,integer)
time.sleep(2) def back(name):
for j in range(500):
integer = random.randint(0,10)
print u'{} 后退{} 步.'.format(name,integer)
time.sleep(1) if __name__ == '__main__':
t1 = threading.Thread(target=go,args=('go',))
t2 = threading.Thread(target=back,args=('back',))
t1.start()
t2.start()
print 'stop stop stop'
上面的 go() 和 back() 交替休眠,谁获得执行权谁执行。(教随机)
2、经典的生产者消费者,两个线程能够 " 沟通 " 。
# -*- coding: utf-8 -*-
import threading
import time
import random
import sys def product(condition):
global integers
while True:
condition.acquire() #获得锁
print u'狗粮生产机启动.................................'
while integers < 100:
time.sleep(1)
integer = random.randint(0,10) #生产
integers = integers + integer
print u'生产了 {} 颗狗粮,总共 {} 颗狗粮'.format(integer,integers)
if integer in [6,8]:
print u'上次生产了 {} 颗狗粮,狗粮生产机要休息休息了,唤醒单身去吃狗粮'.format(integer)
break
print u'狗粮生产机停止................................'
condition.notify() #通知
#condition.wait()
condition.release() #释放锁 def customer(condition):
global integers
while True:
condition.acquire() #获得锁
while integers > 0:
time.sleep(1)
integer = random.randint(0,10)
integers_tmp = integers - integer
if integers_tmp < 0:
integer = integers
integers = 0
print u'单身狗吃 {} 颗狗粮,没有狗粮,汪汪汪...'.format(integer)
else:
integers = integers - integer
print u'单身狗吃 {} 颗狗粮,还有 {} 狗粮.'.format(integer,integers)
condition.notify() #通知
#condition.wait()
condition.release()#释放锁 if __name__ == '__main__':
integers = 0
condition = threading.Condition()
t1 = threading.Thread(target=product,args=(condition,))
t2 = threading.Thread(target=customer,args=(condition,))
t1.start()
t2.start()
上面的狗粮生产机(生产者)和单身狗(消费者),一个生产狗粮,一个吃狗粮。
[python 学习] python 多线程的更多相关文章
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- Python学习---Python安装与基础1205
1.0. 安装 1.1.1. 下载 官网下载地址:https://www.python.org/downloads/release/python-352/ 1.1.2. 配置环境变量 因为在安装的时候 ...
- Python学习---Python下[元组]的学习
元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...
- Python学习---Python的异步IO[all]
1.1.1. 前期环境准备和基础知识 安装: pip3 install aiohttp pip3 install grequests pip3 install wheel pip3 install s ...
- Python学习--Python基础语法
第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...
- python学习-python入门
开始学习python,开始记录. 第一个小程序:登陆系统 功能:1.通过文件名和密码导入用户名和密码~ 2.用户输入用户名和密码 3.将用户输入的用户名进行比对,先判断用户名是否在黑名单里面,如果在黑 ...
- Python学习——Python进程
python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...
- Python学习:python网址收集
Python学习网址收集: 语法学习:http://www.cnblogs.com/hongten/tag/python/ http://www.liaoxuefeng.com ...
- python学习--python 连接SQLServer数据库(两种方法)
1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...
- Python学习--Python的了解与安装
Python简介: Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 由荷兰人Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 19 ...
随机推荐
- uniapp 之navigateTo:fail page 跳转路径不对
开发uniapp,点击列表跳转详情报错 [system] navigateTo:fail page `/pages/tabBar/index/detail/detail?title=uni-app行业 ...
- 修改mac默认python版本 为python3
mac一般自带python2.7 可以修改 ~/.bash_profile (具体的path取决于你的python3安装路径): vi ~/.bash_profile # 添加这一行 alias py ...
- jmeter的日常特殊参数化
1.map转译符号: 如果///Mobile///:///18888888888/// 需要再参数化请这样做,////Mobile////://///${Mobile}///// 2.in ...
- Using Groovy To Import XML Into MongoDB
w https://trishagee.github.io/post/groovy_import_to_mongodb/
- 设计模式-Runoob:设计模式
ylbtech-设计模式-Runoob:设计模式 1.返回顶部 1. 设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发 ...
- day48—JavaScript键盘事件
转行学开发,代码100天——2018-05-03 今天继续学习JavaScript事件基础之键盘事件. 键盘代号获取 keyCode 键盘事件:onkeydown onkeyup 如通过键盘上下左右按 ...
- pom.xml文件设置
一个相对完整的maven配置文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- 《图解设计模式》读书笔记9-1 Flyweight模式
目录 模式简介 示例代码 代码功能与实现思路 类图 代码 结果图示分析 模式角色和类图 角色 类图 拓展思路 对多个地方产生影响 什么要共享,什么不要共享 垃圾回收 模式简介 Flyweight是轻量 ...
- 安全运维 - Linux系统攻击应急响应
Linux 应急相应 - 总纲 应急准备: 制定应急策略 组建应急团队 其他应急资源 安全事件处理: 痕迹数据获取 分析.锁定攻击源删除可疑账号关闭异常进程.端口禁用相应异常开机启动项删除异常定时任务 ...
- Python3的基本数据类型
2.1. Python3中六个标准的基本数据类型: Number(数字) String(字符串) Sets(集合) Tuple(元组) List(列表) Dictionary(字典) 2.2. Pyt ...