Python多线程获取网页数据速度过慢如何调整,python多线程,Python代码如下#


Python代码如下

# -*- coding: utf-8 -*-import urllib2,urllibimport threading     #多线程模块import time, randomimport sysfrom bs4 import *class MyThread(threading.Thread):    def __init__( self, url ):        threading.Thread.__init__( self )                self.url  = url    '''vertual function in Thread'''    def run( self ):        try:            urllib.urlcleanup()    #清除使用urlopen后产生的缓存文件            req = urllib2.Request(self.url)            response = urllib2.urlopen(req,None)     #3秒超时            html = response.read()            soup = BeautifulSoup(html)            print str(self.url) + ">>>" + str(soup.title) + "\n"        except:            print "run函数出错..."#main函数入口if __name__ == "__main__":    tasks = []    #创建线程对象    for i in range(0,100):        task = MyThread( "http://www.baidu.com" )        tasks.append( task )    # 启动所有的线程    for t in tasks:        t.start()    # 主线程中等待所有子线程退出    for t in tasks:        t.join()

获取百度首页标题100次所花费的时间:

注:刚接触Python多线程机制,不知道使用上有没有错误,以上代码该怎样修改才能进一步提升速度呢?

首先python的线程由于GIL的限制 效率不会特别高,为了效率可以考虑多进程或线程进程混合。其次 100个线程有点多,开销大也会造成效率低,可以采用线程池来执行批量任务。

编橙之家文章,

评论关闭