我想创建一个程序,该程序可以获取100多个网页并返回其内容。我现在可以使用简单的python脚本来做到这一点:
pip uninstall mpi4py
pip install --no-cache-dir mpi4py
但是,上述实现的缺点是,在for循环中,必须在对下一个URL进行请求之前加载内容。我要做的就是避免这种情况。我想为每个网址提出一个请求,但不必等待加载当前网址的内容即可完成。我怎样才能做到这一点?我已经阅读了aiohttp和线程技术,但是我不确定什么是最好的方法。
答案 0 :(得分:1)
asyncio + aiohttp是很好的组合,可以显着改善性能:
示例实现:
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
resp = await session.get(url)
content = await resp.text()
return content
async def main():
urls = [...]
webpages = await asyncio.gather(*[fetch(url) for url in urls])
# use webpages for further processing
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()