同步和異步
同步和異步是指程式的執行方式,在同步執行中,程式會按順序一個接一個地執行任務,直到當前任務完成,而在異步執行中,程式會在等待當前任務完成的同時,執行其他任務,
同步執行意味著程式會阻塞,等待任務完成,而異步執行則意味著程式不會阻塞,可以同時執行多個任務,
同步和異步的選擇取決于你的程式需求,如果你的程式需要等待某些任務完成后才能繼續,那么同步的方式可能是更好的選擇,如果你的程式可以在等待任務完成的同時繼續執行其他任務,那么異步的方式可能是更好的選擇,
asyncio
asyncio是Python的異步編程庫,用于撰寫并發程式,它提供了一組基于協程的工具,可以幫助你實作異步網路通信、并發計算等任務,
舉個例子,假設你撰寫了一個程式,要向多個遠程服務器發送請求,然后等待這些服務器的回應,如果你使用同步的方式撰寫程式,你可能會這樣寫:
import requests
def send_request(url):
response = requests.get(url)
return response.text
# 向服務器1發送請求
response1 = send_request("http://server1.com")
# 向服務器2發送請求
response2 = send_request("http://server2.com")
# 向服務器3發送請求
response3 = send_request("http://server3.com")
在這段代碼中,你會發現,當你向服務器1發送請求時,程式會等待服務器1的回應,然后再向服務器2發送請求,最后再向服務器3發送請求,這意味著,當你發送請求時,程式都會被阻塞,直到收到回應,
如果你使用asyncio來撰寫程式,你可能會這樣寫:
import asyncio
import aiohttp
async def send_request(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
# 向服務器1發送請求
response1 = asyncio.run(send_request("http://server1.com"))
# 向服務器2發送請求
response2 = asyncio.run(send_request("http://server2.com"))
# 向服務器3發送請求
response3 = asyncio.run(send_request("http://server3.com"))
在這段代碼中,你會發現,當你向服務器1發送請求時,程式不會立刻等待服務器1的回應,相反,程式會立刻向服務器2和服務器3發送請求,然后等待所有回應的到來,這意味著,當你發送請求時,程式不會阻塞,而是會繼續執行其他任務,
這就是asyncio的基本用法,它可以幫助你撰寫高效的異步程式,
Github主頁:https://github.com/Viceversa0 發布一些感覺有用的代碼CSDN主頁: https://blog.csdn.net/keepkind?spm=1010.2135.3001.5343 用來發布一些BUG修復的辦法、學習筆記、以及演算法題歡迎共同學習!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541101.html
標籤:其他
