python - 如何在请求中使用多线程?
问题描述
你好,我有这个代码使用 Python,它使用 requests 模块:
import requests
url1 = "myurl1" # I do not remember exactly the exact url
reponse1 = requests.get(url1)
temperature1 = reponse1.json()["temperature"]
url2 = "myurl2" # I do not remember exactly the exact url
reponse2 = requests.get(url2)
temperature2 = reponse2.json()["temp"]
url3 = "myurl3" # I do not remember exactly the exact url
reponse3 = requests.get(url3)
temperature3 = reponse3.json()[0]
print(temperature1)
print(temperature2)
print(temperature3)
实际上我不得不告诉你这有点慢......你有一个解决方案来提高我的代码速度吗?我想使用多线程,但我不知道如何使用它...
非常感谢 !
解决方案
尝试Python 执行器:
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
from multiprocessing import cpu_count
urls = ['/url1', '/url2', '/url3']
with ThreadPoolExecutor(max_workers=2*cpu_count()) as executor:
future_to_url = {executor.submit(requests.get, url): url for url in urls}
for future in as_completed(future_to_url):
response = future.result() # TODO: handle exceptions here
url = future_to_url[future]
# TODO: do something with that data
推荐阅读
- apache-kafka - 以后可以更改 Kafka 平台,而不会对表数据产生任何影响
- r - 如何在 R 的循环中创建名称基于文件名的数据框?
- javascript - 在 Quasar 中使用嵌套对象创建表
- java - RedisTemplate getExpire() 在 Springcache 中返回意外值
- python - 是否有一种简单/快捷的方式来获取 python 中任何数据框的基本统计数据的可视化?
- javascript - 如何创建一个抽象函数来从 mongoose 获取数据?
- git - 我的整台计算机现在与 git 链接,试图链接现有的 R 项目 MAC
- node.js - 为什么我的网站截图结果变成中文了?
- python - 无法在 Scrapy 中找到选择器的路径
- excel - VBA Excel 上的多个过滤器不起作用