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实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python解惑之整数比较详解
Apr 24 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
Python内建函数之raw_input()与input()代码解析
Oct 26 Python
Python实现的双色球生成功能示例
Dec 18 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
Python使用pdb调试代码的技巧
May 03 Python
Django静态文件加载失败解决方案
Aug 26 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控制文件下载速度的方法
2015/03/24 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python opencv之分水岭算法示例
2018/02/24 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python3的socket使用方法详解
2020/02/18 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
请解释流与文件有什么不同
2016/07/29 面试题
学习党课思想汇报
2013/12/29 职场文书
图书室管理制度
2014/01/19 职场文书
先进个人推荐材料
2014/12/29 职场文书
监察建议书
2015/02/04 职场文书
写给老婆的保证书
2015/02/27 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
企业法人代表证明书
2015/06/18 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript