downloadStart = datetime.now()
while (True):
requestURL = transactionAPI.format(page = tempPage,limit = 5000)
response = requests.get(requestURL,headers=headers)
json_data = json.loads(response.content)
tempMomosTransactionHistory.extend(json_data["list"])
if(datetime.fromtimestamp(json_data["list"][-1]["crtime"]) < datetime(datetime.today().year,datetime.today().month,datetime.today().day - dateRange)):
break
tempPage = 1
downloadEnd = datetime.now()
任何建議請執行緒或類似的東西?
輸出在這里
下載時間 0:00:02.056010
下載時間 0:00:05.680806
下載時間 0:00:05.447945
uj5u.com熱心網友回復:
您需要通過兩種方式對其進行改進。
- 優化回圈內的代碼
- 并行化代碼執行
#1 通過查看您的代碼,我可以看到一項改進,即。創建 datetime.today 物件而不是執行 3 次。檢查其他方法,例如 transactionAPI 進一步優化。
#2:如果您是多核 CPU 機器,那么您可以通過跨越每頁執行緒來利用機器。參考上面修改后的代碼。
import threading
def processRequest(tempPage):
requestURL = transactionAPI.format(page = tempPage,limit = 5000)
response = requests.get(requestURL,headers=headers)
json_data = json.loads(response.content)
tempMomosTransactionHistory.extend(json_data["list"])
downloadStart = datetime.now()
while (True):
#create thread per page
t1 = threading.Thread(target=processRequest, args=(tempPage, ))
t1.start()
#Fetch datetime today object once instaed 3 times
datetimetoday = datetime()
if(datetime.fromtimestamp(json_data["list"][-1]["crtime"]) < datetime(datetimetoday.year,datetimetoday.month,datetimetoday.day - dateRange)):
break
tempPage = 1
downloadEnd = datetime.now()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388571.html
下一篇:線性化嵌套的for回圈
