python 多线程应用介绍


Posted in Python onDecember 19, 2012

python可以方便地支持多线程。可以快速创建线程、互斥锁、信号量等等元素,支持线程读写同步互斥。美中不足的是,python的运行在python 虚拟机上,创建的多线程可能是虚拟的线程,需要由python虚拟机来轮询调度,这大大降低了python多线程的可用性。我们经今天用了经典的生产者和消费者的问题来说明下python的多线程的运用 上代码:

#encoding=utf-8 
import threading 
import random 
import time 
from Queue import Queue 

class Producer(threading.Thread): 

def __init__(self, threadname, queue): 
threading.Thread.__init__(self, name = threadname) 
self.sharedata = queue 

def run(self): 
for i in range(20): 
print self.getName(),'adding',i,'to queue' 
self.sharedata.put(i) 
time.sleep(random.randrange(10)/10.0) 
print self.getName(),'Finished' 


# Consumer thread 

class Consumer(threading.Thread): 


def __init__(self, threadname, queue): 
threading.Thread.__init__(self, name = threadname) 
self.sharedata = queue 


def run(self): 

for i in range(20): 
print self.getName(),'got a value:',self.sharedata.get() 
time.sleep(random.randrange(10)/10.0) 
print self.getName(),'Finished' 


# Main thread 

def main(): 

queue = Queue() 
producer = Producer('Producer', queue) 
consumer = Consumer('Consumer', queue) 
print 'Starting threads ...' 
producer.start() 
consumer.start() 
producer.join() 
consumer.join() 
print 'All threads have terminated.' 
if __name__ == '__main__': 
main()

你亲自运行下这断代码,可能有不一样的感觉!理解以后可以用python cookielib 再结果python urllib 写一个多线程下载网页的脚本应该没什么问题

Python 相关文章推荐
Python 网络编程起步(Socket发送消息)
Sep 06 Python
详解Python Socket网络编程
Jan 05 Python
Python检测网站链接是否已存在
Apr 07 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
将python图片转为二进制文本的实例
Jan 24 Python
打包PyQt5应用时的注意事项
Feb 14 Python
python随机模块random使用方法详解
Feb 14 Python
如何使用python代码操作git代码
Feb 29 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
Python 数据可视化之Seaborn详解
Nov 02 Python
Python多线程学习资料
Dec 19 #Python
python搭建简易服务器分析与实现
Dec 15 #Python
Python笔记(叁)继续学习
Oct 24 #Python
python笔记(2)
Oct 24 #Python
python笔记(1) 关于我们应不应该继续学习python
Oct 24 #Python
Python的一些用法分享
Oct 07 #Python
Python天气预报采集器实现代码(网页爬虫)
Oct 07 #Python
You might like
PHP初学者头疼问题总结
2006/07/08 PHP
php分页示例分享
2014/04/30 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
python求素数示例分享
2014/02/16 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python中字符串与编码示例代码
2019/05/20 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
会计电算化专业毕业生推荐信
2013/12/24 职场文书
初中班主任评语
2014/04/24 职场文书
2014年路政工作总结
2014/12/10 职场文书
离婚上诉状范文
2015/05/23 职场文书
追讨欠款律师函
2015/05/27 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
催款函范本大全
2015/06/24 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android