Python多线程简易版 - 线程池threadpool
2016-05-01 20:54
721 查看
http://blog.sina.com.cn/s/blog_631d3a630101jxj2.html
好久没分享技术类文章了,一方面是感觉自己技术差,另一方面是最近静不下心去研究,总是不求甚解,半途而废。
近来也写了几个小程序,比如查询收录,查询排名,python已逐渐成为不可或缺的打杂利器。但速度问题一直是心头之恨,写的程序都是一根筋,在《Python核心编程》的多线程一章看了两遍,也一直不理解多线程怎么用,怎么构建线程池,控制线程数量。后来无意间发现了个多线程简易版,可以控制线程数量,4行代码实现线程池,正好符合我这小白的需求。
以下是简单的4行代码:
只要以上4行代码就可以实现多线程,能控制线程数量,吊不吊?!下面是我写的一个小程序,就记录下时间。
当然,也可以对结果进行操作,下面是调整后版本:
对于更多的API和使用方法,请访问threadpool的官方网站(http://chrisarndt.de/projects/threadpool/api/),或者pypi页面(https://pypi.python.org/pypi/threadpool#downloads),再或者看google
code源码(https://code.google.com/p/pythonthreadpool/)。
我是使用easy install安装的,很方便,建议您也考虑这个方法。可以自动匹配版本并安装。
或者上pypi上(https://pypi.python.org/pypi/threadpool#downloads)下载文件安装。
不过从官网来看,好像闲置了很久,从09年开始就没更新了。
我将threadpool用于查询收录,查询排名等独立运行,没有占用共同资源的脚本,虽说没有threading操作精确,但确实很简单。
图记:好吧,之前的图片太丑了,就换成了桂正和的漫画《I'S》中的女主人公,还记得高中时候一群男生都抢着看这套漫画,里面的主人公太漂亮了。
好久没分享技术类文章了,一方面是感觉自己技术差,另一方面是最近静不下心去研究,总是不求甚解,半途而废。
近来也写了几个小程序,比如查询收录,查询排名,python已逐渐成为不可或缺的打杂利器。但速度问题一直是心头之恨,写的程序都是一根筋,在《Python核心编程》的多线程一章看了两遍,也一直不理解多线程怎么用,怎么构建线程池,控制线程数量。后来无意间发现了个多线程简易版,可以控制线程数量,4行代码实现线程池,正好符合我这小白的需求。
使用
以下是简单的4行代码:pool = threadpool.ThreadPool(10) #建立线程池,控制线程数量为10 reqs =threadpool.makeRequests(get_title, data, print_result) #构建请求,get_title为要运行的函数,data为要多线程执行函数的参数,最后这个print_result是可选的,是对前两个函数运行结果的操作[pool.putRequest(req) for req in reqs] #多线程一块执行 pool.wait() #线程挂起,直到结束
示例
只要以上4行代码就可以实现多线程,能控制线程数量,吊不吊?!下面是我写的一个小程序,就记录下时间。import threadpool import time def now_time(n): print 'Starting at %s' %time.ctime() time.sleep(n) print 'Ending at %s' % time.ctime() pool =threadpool.ThreadPool(5) reqs = threadpool.makeRequests(now_time, range(1, 11))[pool.putRequest(req) for req in reqs] pool.wait()
当然,也可以对结果进行操作,下面是调整后版本:
import threadpool import time def now_time(n): print 'Starting at %s' %time.ctime() time.sleep(n) return 'Ending at %s' % time.ctime() defprint_now(request, n): print '%s - %s' % (request.requestID, n) #这里的requestID只是显示下,没实际意义 pool = threadpool.ThreadPool(5) reqs =threadpool.makeRequests(now_time, range(1, 11), print_now) [pool.putRequest(req)for req in reqs] pool.wait()
对于更多的API和使用方法,请访问threadpool的官方网站(http://chrisarndt.de/projects/threadpool/api/),或者pypi页面(https://pypi.python.org/pypi/threadpool#downloads),再或者看google
code源码(https://code.google.com/p/pythonthreadpool/)。
安装
我是使用easy install安装的,很方便,建议您也考虑这个方法。可以自动匹配版本并安装。或者上pypi上(https://pypi.python.org/pypi/threadpool#downloads)下载文件安装。
不过从官网来看,好像闲置了很久,从09年开始就没更新了。
最后
我将threadpool用于查询收录,查询排名等独立运行,没有占用共同资源的脚本,虽说没有threading操作精确,但确实很简单。图记:好吧,之前的图片太丑了,就换成了桂正和的漫画《I'S》中的女主人公,还记得高中时候一群男生都抢着看这套漫画,里面的主人公太漂亮了。
相关文章推荐
- python-模拟math.pi
- python线程池(threadpool)模块使用
- python基础-将python作为计算器
- Python教程:[66]sorted()排序详解
- Python编码报错
- 【LeetCode】Merge Two Sorted Lists 解题报告(Java & Python)
- python_使用__future__
- Python3下sqlalchemy对mysql数据库的配置
- Windows 7(64-bit)下安装和配置Theano 并实现完美 GPU (GTX 970)加速
- Python模块--Python学习笔记三
- read the python code and predict the results --- from <Learn Python The Hard Way>
- Python 装饰器
- 关于Win下“ImportError: No module named _curses”的解决方案
- 如何用Notepad++运行Python脚本
- numpy的100个练习(一)
- python 数据类型基础
- python 文档字符串 关键字参数 默认参数 传递函数和lambda函数
- Python-sorted与sort,以及模拟内置函数sorted()
- FTP python编程
- Pandas入门(二)——DataFrame结构及常用操作