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使用post提交数据到远程url的方法
Apr 29 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
详解Django admin高级用法
Nov 06 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 Python
python全面解析接口返回数据
Feb 12 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
PHP常用函数小技巧
2008/09/11 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
学习Django知识点分享
2019/09/11 Python
Django values()和value_list()的使用
2020/03/31 Python
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
小学生秋游活动方案
2014/02/23 职场文书
销售总经理岗位职责
2014/03/15 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
太空授课观后感
2015/06/17 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
Mysql Show Profile
2021/04/05 MySQL