python开线程池请求接口
时间: 2023-05-24 17:03:02 浏览: 117
A:在Python中,可以使用`concurrent.futures`模块创建线程池来并发地执行多个请求。下面是一个简单的示例:
```python
import concurrent.futures
import requests
# 要请求的接口列表
urls = ["https://www.example.com/api/1", "https://www.example.com/api/2", "https://www.example.com/api/3"]
# 定义一个请求函数
def fetch(url):
resp = requests.get(url)
return resp.text
# 创建线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
# 提交请求任务到线程池
future_to_url = {executor.submit(fetch, url): url for url in urls}
for future in concurrent.futures.as_completed(future_to_url):
url = future_to_url[future]
try:
# 处理每个请求的响应结果
data = future.result()
print(f"{url} success with result: {data}")
except Exception as exc:
print(f"{url} error: {exc}")
```
上面的例子中,我们使用`concurrent.futures.ThreadPoolExecutor()`创建了一个最大线程数为5的线程池,然后使用`executor.submit()`提交所有的请求任务到线程池中。
`concurrent.futures.as_completed()`方法会返回一个迭代器,当线程池中的任务完成后会依次迭代每个任务的结果。我们可以通过判断每个任务的结果来处理请求成功或失败的情况。
注意:线程池不适合执行CPU密集型任务,因为它们不会提高执行速度,反而会降低性能。对于CPU密集型任务,可以使用`concurrent.futures.ProcessPoolExecutor()`或`multiprocessing`模块创建进程池来并发处理。