Python线程池

mutilprocessing.dummy

multiprocessing.dummy 模块与 multiprocessing 模块的区别: dummy 模块是多线程,而 multiprocessing 是多进程, api 都是通用的。 所有可以很方便将代码在多线程和多进程之间切换

# from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
import time
import urllib2

urls = [
    'http://www.baidu.com',
    'http://home.baidu.com/',
    'http://tieba.baidu.com/',
    'http://zhidao.baidu.com/',
    'http://music.baidu.com/',
    'http://image.baidu.com/',
    'http://python-china.org/',
    'http://python-china.org/node/about',
    'http://python-china.org/node/',
    'http://python-china.org/account/signin',
    'http://python-china.org/account/signup',
    'http://www.qq.com',
    'http://www.youku.com',
    'http://www.tudou.com'
]

start = time.time()
results = map(urllib2.urlopen, urls)
print 'Normal:', time.time() - start

start2 = time.time()
# 开8个 worker,没有参数时默认是 cpu 的核心数
pool = ThreadPool(processes=8)
# 在线程中执行 urllib2.urlopen(url) 并返回执行结果
results2 = pool.map(urllib2.urlopen, urls)
pool.close()
pool.join()
print 'Thread Pool:', time.time() - start2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,554评论 25 709
  • 为了在项目中管理优化线程数量,线程池是必不可少的。Python的在multiprocess中有进程池作为进程管理,...
    slords阅读 470评论 0 1
  • 最近一个项目上使用线程池,设定处理项1W,10线程,但是需要检测线程进行状态。出现错误N次,就自动终止线程。实现如...
    迷途老鹰阅读 994评论 0 5
  • 材料准备 1. 各种纸:包装纸、手工纸、日本纸、打印纸、素描纸、纸板……基本平时随意收集一些纸,不同厚度不同质感,...
    冉冉狐生竹阅读 15,609评论 5 128