第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求助:多進(jìn)程調(diào)用百度地圖 API 獲取數(shù)據(jù),比單進(jìn)程慢,為什么?。ǜ酱a)?

求助:多進(jìn)程調(diào)用百度地圖 API 獲取數(shù)據(jù),比單進(jìn)程慢,為什么啊(附代碼)?

阿波羅的戰(zhàn)車 2019-02-23 21:13:36
多進(jìn)程調(diào)用百度地圖 api,先獲取經(jīng)緯度,然后利用經(jīng)緯度獲取過路費(fèi),保存到 excel (獲取一條存一條),因?yàn)橄爰涌焖俣?,所以寫了多進(jìn)程,但是經(jīng)過測試,多進(jìn)程比單進(jìn)程還要慢,想請教下為什么啊?附代碼(我的 ak 隱藏了): 單進(jìn)程 import requests from openpyxl import load_workbook import time # 獲取經(jīng)緯度 def geocode(address): base = url = "http://api.map.baidu.com/geocoder/v2/?address=" + address + "&output=json&ak=" response = requests.get(base) answer = response.json() return answer['result']['location'] # 獲取過路費(fèi) def get(origin_lat,origin_lng,destination_lat,destination_lng): base = url = "http://api.map.baidu.com/direction/v2/driving?origin=" + str(origin_lng) + "," + str(origin_lat) + "&destination=" \ + str(destination_lng)+","+str(destination_lat) + "&output=json&ak=" response = requests.get(base) answer = response.json() info = [answer['result']['routes'][0]['duration']/60,answer['result']['routes'][0]['distance']/1000,answer['result']['routes'][0]['toll']] return info if __name__=='__main__': start = time.clock() data = load_workbook(r"ODdata.xlsx") table = data.get_sheet_by_name('locationcode') nrows = table.max_row ncols = table.max_column origin_table = data.get_sheet_by_name('OD') origin_nrows = origin_table.max_row origin_ncols = origin_table.max_column go_outset = [] go_destination = [] for r in range(2,nrows+1): go_outset.append(table.cell(row=r,column=2).value) #生成去程出發(fā)地列表 for r in range(2,nrows+1): go_destination.append(table.cell(row=r,column=5).value) #生成去程目的地列表 go_outset_count=1 go_destination_count=1 go_outset_locationcode = [] for i in go_outset: try: go_outset_locationcode.append(geocode(i)) #生成去程出發(fā)地經(jīng)緯度 print("出發(fā)地經(jīng)緯度查詢計數(shù)%d"%go_outset_count) go_outset_count+=1 except: go_outset_locationcode.append({'lat':'wrong','lng':'wrong'}) go_destination_locationcode = [] for i in go_destination: try: go_destination_locationcode.append(geocode(i))#生成去程目的地經(jīng)緯度 print("目的地經(jīng)緯度查詢計數(shù)%d" % go_destination_count) go_destination_count+=1 except: go_destination_locationcode.append({'lat':'wrong','lng':'wrong'}) go_outset_locationcodelist = [] go_destination_locationcodelist = [] for i in range(len(go_outset_locationcode)): go_outset_locationcodelist.append(go_outset_locationcode[i].values()) for i in range(len(go_destination_locationcode)): go_destination_locationcodelist.append(go_destination_locationcode[i].values()) #將經(jīng)緯度和省份寫入 excel for i in range(2,nrows+1): for j in range(3,5): _ = table.cell(column=j, row=i, value=list(go_outset_locationcodelist[i-2])[j-3]) for i in range(2,nrows+1): for j in range(6,8): _ = table.cell(column=j, row=i, value=list(go_destination_locationcodelist[i-2])[j-6]) data.save(r"ODdata.xlsx") #獲取過路費(fèi) info = [] go_count=1 for i in range(0,len(go_outset)): if list(go_outset_locationcodelist[i])[0]=='wrong': continue else: try: info.append(get(list(go_outset_locationcodelist[i])[0],list(go_outset_locationcodelist[i])[1],list(go_destination_locationcodelist[i])[0],list(go_destination_locationcodelist[i])[1])) print("過路費(fèi)查詢計數(shù)%d" % go_count) go_count+=1 except: info.append(['wrong','wrong','wrong']) print("錯誤行數(shù)是%d"%i) finally: for j in range(8,11): _ = origin_table.cell(column=j, row=i+3, value=info[i][j - 8]) data.save(r"ODdata.xlsx") elapsed = (time.clock() - start) print("Time used:", elapsed) 多進(jìn)程 import requests from openpyxl import load_workbook import multiprocessing from multiprocessing import Lock,Pool import time # 獲取經(jīng)緯度 def geocode(address): base = url = "http://api.map.baidu.com/geocoder/v2/?address=" + address + "&output=json&ak=" response = requests.get(base) answer = response.json() return answer['result']['location'] # 保存到 excel def save(info): # data_new = load_workbook(r"ODdata.xlsx") # origin_table_new = data_new['OD'] for j in range(8, 11): _ = origin_table.cell(column=j, row=i + 3, value=info[j-8]) data.save(r"ODdata.xlsx") print("第%d 行保存成功" % (i + 1)) # 獲取過路費(fèi) def getall(i,origin_lat,origin_lng,destination_lat,destination_lng): try: base = url = "http://api.map.baidu.com/direction/v2/driving?origin=" + str(origin_lng) + "," + str( origin_lat) + "&destination=" \ + str(destination_lng) + "," + str( destination_lat) + "&output=json&ak=" response = requests.get(base) answer = response.json() info = [answer['result']['routes'][0]['duration'] / 60, answer['result']['routes'][0]['distance'] / 1000, answer['result']['routes'][0]['toll']] print("過路費(fèi)查詢成功,第%d 行" % (i+1)) except: info=['wrong', 'wrong', 'wrong'] print("過路費(fèi)查詢失敗,第%d 行" % (i+1)) # finally: # for j in range(8, 11): # _ = origin_table.cell(column=j, row=i + 3, value=info[j - 8]) # data.save(r"ODdata.xlsx") # print("第%d 行保存成功" % (i + 1)) return info if __name__=='__main__': start = time.clock() data = load_workbook(r"ODdata.xlsx") table = data['locationcode'] nrows = table.max_row ncols = table.max_column origin_table = data['OD'] origin_nrows = origin_table.max_row origin_ncols = origin_table.max_column go_outset = [] go_destination = [] for r in range(2,nrows+1): go_outset.append(table.cell(row=r,column=2).value) #生成去程出發(fā)地列表 for r in range(2,nrows+1): go_destination.append(table.cell(row=r,column=5).value) #生成去程目的地列表 go_outset_count=1 go_destination_count=1 go_outset_locationcode = [] for i in go_outset: try: go_outset_locationcode.append(geocode(i)) #生成去程出發(fā)地經(jīng)緯度 print("出發(fā)地經(jīng)緯度查詢計數(shù)%d"%go_outset_count) go_outset_count+=1 except: go_outset_locationcode.append({'lat':'wrong','lng':'wrong'}) go_destination_locationcode = [] for i in go_destination: try: go_destination_locationcode.append(geocode(i))#生成去程目的地經(jīng)緯度 print("目的地經(jīng)緯度查詢計數(shù)%d" % go_destination_count) go_destination_count+=1 except: go_destination_locationcode.append({'lat':'wrong','lng':'wrong'}) go_outset_locationcodelist = [] go_destination_locationcodelist = [] for i in range(len(go_outset_locationcode)): go_outset_locationcodelist.append(go_outset_locationcode[i].values()) for i in range(len(go_destination_locationcode)): go_destination_locationcodelist.append(go_destination_locationcode[i].values()) #將經(jīng)緯度和省份寫入 excel for i in range(2,nrows+1): for j in range(3,5): _ = table.cell(column=j, row=i, value=list(go_outset_locationcodelist[i-2])[j-3]) for i in range(2,nrows+1): for j in range(6,8): _ = table.cell(column=j, row=i, value=list(go_destination_locationcodelist[i-2])[j-6]) data.save(r"ODdata.xlsx") #開啟多進(jìn)程,獲取過路費(fèi) for i in range(0,len(go_outset)): if list(go_outset_locationcodelist[i])[0]=='wrong': continue else: pool = multiprocessing.Pool(processes=5) pool.apply_async(getall,(i,list(go_outset_locationcodelist[i])[0], list(go_outset_locationcodelist[i])[1],list(go_destination_locationcodelist[i])[0], list(go_destination_locationcodelist[i])[1],),callback=save) # pool.apply(getall, (i, list(go_outset_locationcodelist[i])[0], list(go_outset_locationcodelist[i])[1], # list(go_destination_locationcodelist[i])[0], # list(go_destination_locationcodelist[i])[1],)) # p = multiprocessing.Process(target=save, args=(i,list(go_outset_locationcodelist[i])[0], list(go_outset_locationcodelist[i])[1], # list(go_destination_locationcodelist[i])[0], list(go_destination_locationcodelist[i])[1],lock)) # p.start() pool.close() pool.join() elapsed = (time.clock() - start) print("Time used:", elapsed)
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關(guān)注
  • 1317 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號