如何在 Python 中使用多处理高效地向 Woosmap API 发送 500,000 个请求进行地理编码?

问题描述 投票:0回答:1

我需要使用 Woosmap API 对大型数据集进行地理编码。我有一个包含大约 500,000 个地址的 DataFrame,我需要尽快对其进行地理编码。目前,我正在使用请求库来一一发送请求,但这需要大量时间。我听说过 Python 中的多重处理,我想知道如何利用它来加速这个过程。有人可以提供有关如何使用多处理同时发送这些请求的指导或代码示例吗?

目前的方法:

import requests

url = "https://api.woosmap.com/localities/geocode?address=Place%20Jeanne-d'Arc&components=country%3AFR&key=YOUR_PUBLIC_API_KEY"

payload={}
headers = {
    'Referer': 'http://localhost'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

我感谢任何有关如何优化此过程以更快地对数据集进行地理编码并在数据框中获得最终响应的帮助或建议。谢谢

python multithreading asynchronous multiprocessing concurrent.futures
1个回答
0
投票

糟糕的答案: 最有效的方法是目标 API 支持批量请求和应答。您无需发出 0.5M 个请求,而是发出 1 个请求并获得所有答案。这是一个糟糕的答案,因为它依赖于 API 并且不能解决您的问题

不满意的答案: RTM 并应用 https://docs.python.org/3/library/multiprocessing.html#using-a-pool-of-workers

没有提供点击尝试的解决方案,但该示例接近您所需要的。为您调用的 API 做好准备以限制您的请求。许多服务对快速查询感到不满,因为服务器必须为每个传入请求分配资源

© www.soinside.com 2019 - 2024. All rights reserved.