非同步程式設計是一種強大的技術,可用於提高 Python 應用程式的效能。 requests 庫提供對非同步請求的支持,可用於同時發送多個請求,從而可能節省大量時間。
透過 requests 函式庫使用非同步請求的一種方法是使用async.map() 函數。該函數獲取請求列表並並行執行它們。預設情況下,async.map() 將傳回回應物件清單。
但是,也可以使用 async.map() 傳回所要求的每個頁面的內容。為此,您可以使用 hooks 參數傳遞要在每個回應上執行的函數。然後可以使用此函數提取頁面的內容。
以下範例示範如何使用async.map() 傳回所要求的每個頁面的內容:
from requests import async import asyncio urls = [ 'http://python-requests.org', 'http://httpbin.org', 'http://python-guide.org', 'http://kennethreitz.com' ] async def get_page_content(url): response = await async.get(url) return response.content async def main(): contents = await asyncio.gather(*[get_page_content(url) for url in urls]) return contents contents = asyncio.run(main()) for content in contents: print(content)
此範例使用async.get() 函數向每個URL 發送請求。然後使用 get_page_content() 函數來擷取每個頁面的內容。 asyncio.gather() 函數用於等待所有請求完成。
此範例的輸出將是所要求的每個頁面的內容清單。
以上是如何利用Python的requests函式庫實現高效率的非同步請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!