以下是一个并行网络请求的示例代码,使用不同的方法进行比较:
import requests
import concurrent.futures
def fetch_url(url):
response = requests.get(url)
return response.text
urls = ['http://example.com', 'http://example.org', 'http://example.net']
with concurrent.futures.ThreadPoolExecutor() as executor:
results = executor.map(fetch_url, urls)
for result in results:
print(result)
import requests
import concurrent.futures
def fetch_url(url):
response = requests.get(url)
return response.text
urls = ['http://example.com', 'http://example.org', 'http://example.net']
with concurrent.futures.ProcessPoolExecutor() as executor:
results = executor.map(fetch_url, urls)
for result in results:
print(result)
import asyncio
import aiohttp
async def fetch_url(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
urls = ['http://example.com', 'http://example.org', 'http://example.net']
async def main():
tasks = [fetch_url(url) for url in urls]
results = await asyncio.gather(*tasks)
for result in results:
print(result)
asyncio.run(main())
以上是三种常见的并行网络请求的方法,分别使用多线程、多进程和异步IO实现。具体使用哪种方法取决于你的需求和环境。