python協(xié)程
線(xiàn)程和進(jìn)程的操作是由程序觸發(fā)系統(tǒng)接口,最后的執(zhí)行者是系統(tǒng);協(xié)程的操作則是程序員。
協(xié)程存在的意義:對(duì)于多線(xiàn)程應(yīng)用,CPU通過(guò)切片的方式來(lái)切換線(xiàn)程間的執(zhí)行,線(xiàn)程切換時(shí)需要耗時(shí)(保存狀態(tài),下次繼續(xù))。協(xié)程,則只使用一個(gè)線(xiàn)程,在一個(gè)線(xiàn)程中規(guī)定某個(gè)代碼塊執(zhí)行順序。
協(xié)程的適用場(chǎng)景:當(dāng)程序中存在大量不需要CPU的操作時(shí)(IO),適用于協(xié)程;
event loop是協(xié)程執(zhí)行的控制點(diǎn), 如果你希望執(zhí)行協(xié)程, 就需要用到它們。
event loop提供了如下的特性:
注冊(cè)、執(zhí)行、取消延時(shí)調(diào)用(異步函數(shù))
創(chuàng)建用于通信的client和server協(xié)議(工具)
創(chuàng)建和別的程序通信的子進(jìn)程和協(xié)議(工具)
把函數(shù)調(diào)用送入線(xiàn)程池中
下面我們來(lái)舉個(gè)例子:
協(xié)程實(shí)例
import asyncio asyncdef cor1(): print("COR1 start") await cor2() print("COR1 end") asyncdef cor2(): print("COR2") loop = asyncio.get_event_loop()loop.run_until_complete(cor1())loop.close()
最后三行是重點(diǎn)。
asyncio.get_event_loop() : asyncio啟動(dòng)默認(rèn)的event loop
run_until_complete() : 這個(gè)函數(shù)是阻塞執(zhí)行的,知道所有的異步函數(shù)執(zhí)行完成,
close() : 關(guān)閉event loop。
以上就是本篇文章所講述的所有內(nèi)容,這篇文章主要介紹了python協(xié)程的相關(guān)知識(shí),希望你能借助資料從而理解上述所說(shuō)的內(nèi)容。希望我在這片文章所講述的內(nèi)容能夠?qū)δ阌兴鶐椭屇銓W(xué)習(xí)python更加輕松。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注