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之正规地说一句话
Sep 28 Python
python获取mp3文件信息的方法
Jun 15 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
Python探索之SocketServer详解
Oct 28 Python
Python统计单词出现的次数
Apr 04 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
python实现广度优先搜索过程解析
Oct 19 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
python 实现的截屏工具
May 08 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
基于jquery实现三级下拉菜单
2016/05/10 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
详解python UDP 编程
2020/08/24 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
法院反腐倡廉心得体会
2014/09/09 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
保安2014年终工作总结
2014/12/06 职场文书
亮剑观后感300字
2015/06/05 职场文书
优质护理服务心得体会
2016/01/22 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang