我在一個應用程式中的一些代碼使我的速度太慢了,這只是一個簡單的 'get'函式... 這部分代碼只是在互聯網上找到PDF的位置,然后將其提取出來。我以為是提取程序花了這么長時間,但經過一些測驗,我相信是'獲取'請求的問題。我在URL中傳遞一個變數,因為有許多不同的PDF,用戶可以間接選擇。我曾嘗試使用kivy的Urlrequest,但說實話,我無法從它那里得到一個結果。但我聽說它更快。我在不同的函式中還有另外兩個'post'會話,它們的作業速度比這個快10倍,所以不知道問題出在哪里......
。我的程式的其他部分作業得很好,只是這個部分有時會在加載時間上增加20-25秒以上(這是不可能的)。
我將在下面附上一個問題的作業摘要,請你嘗試一下。 我發現在它第一次嘗試 "airport_loc "時是最慢的,請嘗試用這些例子來替換airport_loc變數。 "YPAD" "YMLT" "YPPH"
我可以在這里做什么不同的事情來加快它的速度或簡單地使它更有效率?
import requests
from html2text import html2text
import re
s = requests.session()
page = s.get('https://www.airservicesaustralia.com/aip/pending/dap/AeroProcChartsTOC.htm')
text = html2text(page.text)
airport_loc = "YSSY"/span>
finding_airport = (re.search(r'.%s.' % re.escape(airport_loc), text)).group()
ap_id_loc = int(text.index(finding_airport) ) 6
ap_id_onward = text[ap_id_loc:]
next_loc = re.search(r'[(]Ywww[)]'/span>, ap_id_onward)
next_loc_stop = text.index(next_loc.group() )
ap_id_to_nxt_ap = text[ap_id_loc:next_loc_stop)
needed_text = (html2text(ap_id_to_nxt_ap))
airport_id_less_Y = airport_loc[1:]
app_1 = re.search(r'%sGN.*' % re.escape(ports_id_less_Y), needed_text)
app_2 = re.search(r'%sII.*' % re.escape(airport_id_less_Y), needed_text)
try:
if app_2.group():
line_of_chart = (app_2.group())
except:
if app_1.group():
line_of_chart = (app_1.group())
chart_title = (re.search(r'wwwwwdd[-]d*[_][dw]*[.]pdf', line_of_chart)) .group()
# get exact pdf now.
chart_PDF = ('https://www.airservicesaustralia.com/aip/pending/dap/' chart_title)
retrieve = s.get(chart_PDF)
content = retrieve.content
print(content)
# from here on is working fine.
我沒有包括這后面的代碼,因為我認為它并不重要。
請幫助我加快這個事情的進度:(
)uj5u.com熱心網友回復:
只用你的代碼,我仍然需要3秒。 延遲可能來自于服務器。
為了使請求更快,我嘗試這樣編輯HTTP配接器。
s.mount('http://', requests.adapters.HTTPAdapter(max_retries=0)
retrieve = s.get(chart_PDF)
它顯示了很小的改進(3秒-> 2秒)
但有失敗的風險。
使用 "asyncio "或其他async http庫是更好的方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/319169.html
標籤:
