Python 3.5正式發布,支持async/await異步編程
2015 年 9 月 13 日,Python 3.5 正式發布。該版本引入了很多新特性,比如支持 async/await 異步編程,改進了對 Python Zip 應用的支持,引入了一個加載擴展模塊的改進機制等。
語法方面的變化主要有三點:
- PEP 492:支持 async/await 語法的協程 </ul>
- 不再使用 .pyo 文件,而是引入了一種更靈活的替代機制,.pyc 文件可以表示優化和未優化的字節碼。優化級別信息可以包含在 .pyc 文件的名字中,具體可參見 PEP 488。
- 重新設計了內置和擴展模塊的加載機制,具體可參見 PEP 489。
- collections.OrderedDict 現在是用C實現的,速度可以提升 4 到 100 倍。
- 新的 os.scandir ()函數,支持更快速地遍歷目錄。
- functools.lru_cache ()大部分用C重新實現了,帶來了更好的性能。
- 標準庫中默認關閉了 SSLv3,不過仍然支持手動開啟。
- HTTP cookie 解析更為嚴格,以防止可能出現的注入攻擊。
PEP 492 極大改進了 Python 中對異步編程的支持,增加了 awaitable 對象(可以是協程或者帶有__await__() 方法的對象)、協程函數、異步迭代和異步上下文管理器等內容。
協程函數用新的 async def 語法聲明:
>>>async def coro (): ... return 'spam'
CPython 實現的改進:
標準庫也有重要改進:
安全方面的改進:
更多新特性,可以參考相關文檔。
另外,在 10 月 15~17 日的 QCon 上海 2015上,國內著名的 Python 專家賴勇浩將分享《探索 Python 3.5 中 async/await 特性的實現》。async/await 特性使得 Python 具備語法級別的協程支持,也讓它有了更容易理解和交流的異步編程模型。那么,這個特性在虛擬機里是如何實現的呢?是否用了什么很特別的機制?跟之前的 yield/yield from 有何異同?敬請期待。
來自: InfoQ
本文由用戶 pphe 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!