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计算三维矢量幅度的方法
Jun 15 Python
python 写的一个爬虫程序源码
Feb 28 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
教你怎么用Python生成九宫格照片
May 20 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
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php商品对比功能代码分享
2015/09/24 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP7多线程搭建教程
2017/04/21 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
python实现发送邮件及附件功能
2021/03/02 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
python开发入门——列表生成式
2020/09/03 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
给女朋友的道歉信
2014/01/10 职场文书
教师简历自我评价
2014/02/03 职场文书
小学教师师德承诺书
2014/05/23 职场文书
房产协议书范本
2014/10/18 职场文书
司机个人年终总结
2015/03/03 职场文书
奔腾年代观后感
2015/06/09 职场文书
初中数学教学反思范文
2016/02/17 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技