我想让这个程序在速度上提高很多。它在10分钟内可以阅读12000页。我想知道是否有什么东西能对速度有很大的帮助?我希望你们知道一些窍门。我应该读上百万页。。。所以这需要太长时间:(这是我的代码:
from eventlet.green import urllib2
import httplib
import time
import eventlet
# Create the URLS in groups of 400 (+- max for eventlet)
def web_CreateURLS():
print str(str(time.asctime( time.localtime(time.time()) )).split(" ")[3])
for var_indexURLS in xrange(0, 2000000, 400):
var_URLS = []
for var_indexCRAWL in xrange(var_indexURLS, var_indexURLS+400):
var_URLS.append("http://www.nu.nl")
web_ScanURLS(var_URLS)
# Return the HTML Source per URL
def web_ReturnHTML(url):
try:
return [urllib2.urlopen(url[0]).read(), url[1]]
except urllib2.URLError:
time.sleep(10)
print "UrlError"
web_ReturnHTML(url)
# Analyse the HTML Source
def web_ScanURLS(var_URLS):
pool = eventlet.GreenPool()
try:
for var_HTML in pool.imap(web_ReturnHTML, var_URLS):
# do something etc..
except TypeError: pass
web_CreateURLS()
我喜欢用青菜。。但我经常受益于使用分布在许多系统上的多个进程。。或者只有一个系统让操作系统负责运行多个进程的所有检查和平衡。在
查看ZeroMQ at http://zeromq.org/上的一些很好的示例,说明如何使一个调度程序具有大量侦听器,这些侦听器执行调度器所说的任何操作。或者查看execnet,了解如何快速开始并行执行远程或本地任务。在
我也经常使用http://spread.org/,并且有很多系统在监听一个公共的传播守护进程。。它是一个非常有用的消息总线,可以很容易地将结果汇集回单个线程并从单个线程进行调度。在
当然,还有redis发布/订阅或同步。:)
“分担负担”
相关问题 更多 >
编程相关推荐