gpt4 book ai didi

python - Geopy 太慢 - 一直超时

转载 作者:行者123 更新时间:2023-11-30 23:08:52 32 4
gpt4 key购买 nike

我正在使用 geopy 获取城市名称的纬度-经度对。对于单个查询,这工作得很好。我现在尝试做的是迭代城市名称的大列表(46.000)并获取每个城市的地理编码。然后,我通过一个检查循环运行它们,将城市(如果在美国)排序为正确的状态。我的问题是,我得到“GeocoderTimedOut('服务超时')”一直以来,一切都很慢,我不确定这是我的错还是地球物理学的本质。这是负责的代码片段:

for tweetcount in range(number_of_tweets):

#Get the city name from the tweet
city = data_dict[0]['tweetList'][tweetcount]['user']['location']

#Sort out useless tweets
if(len(city)>3 and not(city is None)):

# THE RESPONSIBLE LINE, here the error occurs
location = geolocator.geocode(city);

# Here the sorting into the state takes place
if location is not None:
for statecount in range(len(data)):
if point_in_poly(location.longitude, location.latitude, data[statecount]['geometry']):

state_tweets[statecount] += 1;
break;

不知何故,这一行每隔 2./3 就会抛出一次超时。称呼。城市有形式“曼彻斯特”、“纽约、纽约”或类似的名称。我已经尝试过 - 除了所有东西周围的 block 之外,但这并没有真正改变问题的任何内容,所以我现在删除了它们......任何想法都会很棒!

最佳答案

您将受到您正在使用的任何地理定位器服务的支配。 geopy 只是不同 Web 服务的包装器,因此如果服务器繁忙,可能会失败。我将围绕 geolocator.geocode 调用创建一个包装器,如下所示:

def geocode(city, recursion=0):
try:
return geolocator.geocode(city)
except GeocoderTimedOut as e:
if recursion > 10: # max recursions
raise e

time.sleep(1) # wait a bit
# try again
return geocode(city, recursion=recursion + 1)

这将在延迟 1 秒后重试 10 次。根据您的喜好调整这些数字。

如果您重复询问同一个城市,您应该考虑将其包装在某种内存中,例如this decorator 。由于您还没有发布可运行的代码,因此我无法对其进行测试。

关于python - Geopy 太慢 - 一直超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31506272/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com