mutilprocessing.dummy
multiprocessing.dummy 模塊與 multiprocessing 模塊的區(qū)別: dummy 模塊是多線程,而 multiprocessing 是多進(jìn)程, api 都是通用的。 所有可以很方便將代碼在多線程和多進(jìn)程之間切換
# 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個(gè) worker,沒有參數(shù)時(shí)默認(rèn)是 cpu 的核心數(shù)
pool = ThreadPool(processes=8)
# 在線程中執(zhí)行 urllib2.urlopen(url) 并返回執(zhí)行結(jié)果
results2 = pool.map(urllib2.urlopen, urls)
pool.close()
pool.join()
print 'Thread Pool:', time.time() - start2