Python urllib2.urlopen()速度很慢,需要一种更好的方式来读取多个URL

Python urllib2.urlopen()速度很慢,需要一种更好的方式来读取多个URL,第1张

Python urllib2.urlopen()速度很慢,需要一种更好的方式来读取多个URL

我正在使用以下现代Python模块(如

threading
和)重写Dumb Guy的代码
Queue

import threading, urllib2import Queueurls_to_load = ['http://stackoverflow.com/','http://slashdot.org/','http://www.archive.org/','http://www.yahoo.co.jp/',]def read_url(url, queue):    data = urllib2.urlopen(url).read()    print('Fetched %s from %s' % (len(data), url))    queue.put(data)def fetch_parallel():    result = Queue.Queue()    threads = [threading.Thread(target=read_url, args = (url,result)) for url in urls_to_load]    for t in threads:        t.start()    for t in threads:        t.join()    return resultdef fetch_sequencial():    result = Queue.Queue()    for url in urls_to_load:        read_url(url,result)    return result

的最佳时间

find_sequencial()
是2秒。最佳时间为
fetch_parallel()
0.9秒。

不说

thread
由于GIL在Python中没有用。这是线程在Python中有用的情况之一,因为线程在I /
O上被阻塞。如您在我的结果中看到的,并行案例的速度快了2倍。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5507840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存