import requests
import xlwings as xw
import threading
import concurrent.futures
import time
data_list = []
url = “https://apis.map.qq.com/ws/geocoder/v1/?address=”
#获取经纬度
def get_lng_lat(address):
time.sleep(1)
try:
ret = requests.get(url=url,
params={
“address”:address,
“key”:“OJFBZ-MYHYJ-6X7FT-KBCNE-Z4VIZ-LPFAG”
}
).json()
lng = ret["result"]["location"]["lng"]
lat = ret["result"]["location"]["lat"]
data_list.append([address,lng,lat])
except KeyError:
data_list.append([address, 0, 0])
#打开excel文件
workbook = xw.Book(r"D:\python_text\work_file\work-data\副本昆明里程对比01.xlsx")
sheet = workbook.sheets[1]
#创建多线程
def threadss():
threads = []
for address in sheet.range(“a1:a{}”.format(sheet.used_range.last_cell.row)).value:
threads.append(
threading.Thread(target=get_lng_lat,args =(address,))
)
for thread in threads:
thread.start()
for thread in threads:
thread.join()
#调用线程池
#pool.map
data_list = []
with concurrent.futures.ThreadPoolExecutor() as pool:
rwsult = pool.map(get_lng_lat,sheet.range(“A1:A10”).value)
rwsult = list(rwsult)
data_list.append(rwsult)
#pool.submit
data_list = []
with concurrent.futures.ThreadPoolExecutor() as pool:
futures = [pool.submit(get_lng_lat,address) for address in sheet.range(“A1:A10”).value]
for future in concurrent.futures.as_completed(futures):
print(future.result())
data_list.append(future.result())
sheet.range("C1").value = data_list
if name == “main”:
start = time.time()
threadss()
end = time.time()
print(end-start)
#结果写入excle
sheet.range(“c1”).value = data_list