日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入Asyncio(一)入门介绍

發布時間:2023/10/18 编程问答 81 如意码农
生活随笔 收集整理的這篇文章主要介紹了 深入Asyncio(一)入门介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

Asyncio試圖解決什么問題?

對于IO負載,有且僅有兩個理由使用基于asyncio的并發而不是基于多線程的并發:
1. Asyncio為搶占式多任務(線程)提供了一個更安全的替代方案,避免了某些程序中的bugs、競態條件和其它未知風險;
2. Asyncio提供了一種簡單的方法來同時支持成千上萬個socket連接,包括長連接或處理物聯網應用程序的MQTT(消息隊列遙測傳輸)。


對于Asyncio有幾個誤區:
1. “Asyncio會使你編寫的程序運行地非常快”,事實是多線程比協程跑的快一點,協程可以同時運行很多socket連接,操作系統往往限制了線程的數量,雖然可以通過修改配置來支持更多的線程,但不如協程簡單;
2. “Asyncio使多線程變得多余”,完全錯誤,asyncio不受GIL的影響僅僅是因為GIL影響多線程程序,其阻止了多核并發,而asyncio從定義上就是單線程的,不受GIL影響,但是也不能從多核CPU中受益;
3. “Asyncio避免了所有的競態條件”,錯誤,競態條件的可能性存在于任何并發編程中,不管是線程還是基于事件的編程。Asyncio可以消除常見的競態條件(如線程間共享內存訪問),但并沒有消除其它類型的競態條件(如分布式微服務體系結構中共享資源的進程間競爭),與多線程相比優勢在于因為await關鍵字的存在,更容易推斷如何訪問共享資源;
4. “Asyncio使并發編程更容易”,錯誤,處理并發總是復雜的,asyncio只是使得避免某些惡心的bug容易一點。


即使有Asyncio,仍然有很多復雜問題沒有解決。你的程序如何支持健康檢查?如何在大量的C/S連接時,僅需要很少的數據庫socket來維持?程序如何安全關閉?如何處理硬盤訪問和日志記錄?


Asyncio給你解決這些復雜問題提供了一種單線程的解決方法,可能會使編程容易一點。

總結

以上是生活随笔為你收集整理的深入Asyncio(一)入门介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。