我正在编写 Python 代码来扩展从 Twitter 获取的缩短的 URL。我已获取所有 URL 并将它们存储在一个由换行符分隔的文本文件中。
目前我正在使用:
response = urllib2.urlopen(url)
return response.url
扩展它们。
但是 urlopen()
方法在扩展 URL 方面似乎不是很快。
我有大约 540 万个网址。有没有更快的方法使用Python来扩展它们?
最佳答案
我怀疑问题在于网络调用速度很慢并且 urllib 会阻塞,直到得到响应。因此,举例来说,假设需要 200 毫秒才能从 URL 缩短服务获得响应,那么使用 urllib 每秒只能解析 5 个 URL。但是,如果您使用异步库,您应该能够在获得第一个答案之前发送大量请求。然后,当响应返回到您的代码时,将对其进行处理。这应该会显着提高您的吞吐量。有一些针对此类事情的 Python 库(Twisted、gevent 等),因此您可能只想在 Google 上搜索“Python async Rest”。
您也可以尝试使用大量线程来执行此操作(我认为 urllib2 在等待响应时会释放 GIL,但不确定)。这不会像异步那么快,但仍然应该加快速度。
这两种解决方案都引入了相当多的复杂性,但如果您想快速......
关于python - 使用python快速扩展缩短的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223421/