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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

更好地查詢?yōu)?CSV 文件的每一行迭代 API 請(qǐng)求?

更好地查詢?yōu)?CSV 文件的每一行迭代 API 請(qǐng)求?

慕桂英3389331 2021-07-27 16:53:23
我在問(wèn)是否有比我更好的 python 查詢,它可以允許更好的處理時(shí)間。我正在為 CSV 文件的每一行迭代 REST API 請(qǐng)求,并將結(jié)果導(dǎo)出到新的 CSV 文件中。當(dāng)我跑 10 行時(shí),大約需要 11 秒。但我需要做 50,000 行。所以我猜這大約需要 14 小時(shí)(833 分鐘 = 50,000 秒)。有什么辦法可以減少處理時(shí)間嗎?(任何查詢改進(jìn)?)謝謝!注意:此 API 可以通過(guò)輸入個(gè)人地址、名字、姓氏等來(lái)確定個(gè)人地址是否是最新的。Python查詢import requestsimport jsonimport pandas as pdimport numpy as npimport csv# Input CSVdf = pd.read_csv(r"C:\users\testu\documents\travis_50000.csv",delimiter = ',' , na_values="nan")   # Writing first, last name columnsplitted = df['prop_yr_owner_name'].str.split()df['last_name'] = splitted.str[0]df['first_name'] = splitted.str[1]print(df["first_name"].iloc[0])# Output CSVwith open(r"C:\users\testu\documents\travis_output.csv", 'w',  newline='') as fp:    # Writing Header    fieldnames = ["AddressExtras","AddressLine1","AddressLine2","BaseMelissaAddressKey","City","CityAbbreviation","MelissaAddressKey","MoveEffectiveDate","MoveTypeCode","PostalCode","State","StateName","NameFirst", "NameFull", "NameLast", "NameMiddle", "NamePrefix", "NameSuffix"]    writer = csv.DictWriter(fp, fieldnames=fieldnames)    writer.writeheader()# Iterating requests for each rowfor row in df.itertuples():    url = 'https://smartmover.melissadata.net/v3/WEB/SmartMover/doSmartMover'     payload = {'t': '1353', 'id': '4t8hsfh8fj3jf', 'jobid': '1', 'act': 'NCOA, CCOA', 'cols': 'TotalRecords,AddressExtras,AddressLine1,AddressLine2,,BaseMelissaAddressKey,City,CityAbbreviation,MelissaAddressKey,MoveEffectiveDate,MoveTypeCode,PostalCode,RecordID,Results,State,StateName, NameFirst, NameFull, NameLast, NameMiddle, NamePrefix, NameSuffix', 'opt': 'ProcessingType: Standard', 'List': 'test', 'first': row.first_name, 'last': row.last_name, 'a1': row.prop_year_addr_line1, 'a2': row.prop_year_addr_line2, 'city': row.prop_addr_city, 'state': row.prop_addr_state, 'postal': row.prop_addr_zip, 'ctry': 'USA'}    response = requests.get(        url, params=payload,        headers={'Content-Type': 'application/json'}    )    r = response.json()    print(r)
查看完整描述

2 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

主要有兩個(gè)性能陷阱:

  1. 對(duì)每一行發(fā)出一個(gè)請(qǐng)求。

  2. 每次打開(kāi)文件以追加信息。

關(guān)于第一點(diǎn)

這是一個(gè)猜測(cè),但您可能會(huì)啟動(dòng)許多 HTTP 請(qǐng)求。改進(jìn)該部分的一種方法是在更大的請(qǐng)求中對(duì)它們進(jìn)行批處理(理想情況下是單個(gè)請(qǐng)求)。通過(guò)這種方式,您可以避免與 PC 和服務(wù)器之間的連接設(shè)置相關(guān)的大量開(kāi)銷(xiāo)。我不知道該 url 是否允許請(qǐng)求批處理,但如果您計(jì)劃請(qǐng)求 50,000 行(猜測(cè)您計(jì)劃在該循環(huán)內(nèi)啟動(dòng)所有請(qǐng)求),您絕對(duì)應(yīng)該研究它。

關(guān)于第二點(diǎn)

你可以嘗試這樣的事情:

with open(r"C:\users\testu\documents\travis_output.csv", 'a', newline='') as fp:            

    csv_writer = csv.writer(fp)

    # Iterating requests for each row

    for row in df.itertuples():

        # Request info and manipulate its response

        # ... code ...

        # Finally, append the data to file

        csv_writer.writerow(output_list)

第二個(gè)提示的主要原因是因?yàn)榇蜷_(kāi)文件是一項(xiàng)耗時(shí)的操作。因此,您應(yīng)該嘗試打開(kāi)該文件一次并多次寫(xiě)入。


請(qǐng)注意,我還沒(méi)有運(yùn)行此代碼,因?yàn)槲疫€沒(méi)有獲得該數(shù)據(jù)的任何樣本。所以,這只是關(guān)于提高性能的常見(jiàn)方法的提示


查看完整回答
反對(duì) 回復(fù) 2021-08-03
  • 2 回答
  • 0 關(guān)注
  • 147 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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