Python 异步网络编程实战
Python 異步網絡編程實戰 - songcser - 掘金小冊
小冊介紹
第一部分是對 Python 協程的講解,從字節碼開始簡單講解了 Python 虛擬機的執行過程,可以大體了解到 Python 協程的執行過程。 第二部分是 Python 中 CS 架構的概念講解和套接字 Socket 的基本用戶。 第三,四部分介紹了 Linux 下的五種 I/O 模型,并且使用 Python 的 select 模塊提供的接口,實現 Select,Poll,Epoll 這三種模型的服務端。?這三部分分別介紹了 Python 中的協程,Socket,異步 I/O ,介紹的知識點比較多,能夠對基礎知識有較深的理解?第五,六,七部分,講解的網絡爬蟲,從簡單的同步方法,到異步方法,最后結合協程,實現了一個即性能高又實現簡單的爬蟲。從簡單到復雜,一步一個實現,最后完成一個性能強大的爬蟲,整個的講解比較清晰,能先循漸進的理解整個實現過程?第八,九,十部分講解了 greenlet 實現協程,和 gevent 的大體結構實現。這里可以了解 gevent 的大體實現過程,對于 gevent 的執行過程有個大體的了解
你會學到什么?
近年來 Python 的發展的非常迅速,“簡單”、“高效”是 Python 吸引人的一大特色。在國內 Python 開發需求越來越大,Python 具有豐富強大的庫,現在各個領域都在廣泛使用,從 Web 開發,到運維開發,到機器學習,到人工智能,Python 都有廣泛的應用。學習 Python 幾乎可以做任何事情,對自己的編程技能會有很大的提升
Python 是一種解釋性語言,語法簡單易用,上手較快,代碼優雅。Python 的開發效率很高,也是大多數開發選擇 Python 的原因。但是 Python 的一個缺點就是性能比較差,對于 Web 開發,性能是比較重要的指標。而在解決性能方面,Python 出現了一些第三方異步網絡框架,如 Tornado,Twisted,Gevent,是比較流行異步框架。在 Python 官方也正式推出了 Asyncio 庫,在這個庫上面也出現了大量的 Web 框架。性能方面有了很大的提升。對于做 Web 開發的人員來說,可能會用到一些異步框架,但是不理解里面的實現原理。本課程講解 Python 異步實現,從簡單的原理開始講解,其中會涉及到很多的知識點,協程,Socket,異步 I/O,爬蟲,會跟著一個一個的實驗,慢慢實現一個性能強大的爬。
第一節講解 Python 中函數的運行過程,將代碼編譯成字節碼,了解字節碼的運行流程和運行時調用棧。學習生成器函數的字節碼執行過程,和整體的調用流程。
第二節介紹了 C/S 架構,講解 Socket 的實現過程,客戶端和服務端使用 Python 的實現過程。服務端不斷接收消息,客戶端不斷發送消息。
第三節和第四節主要講解 IO 多路復用,Linux下的五種 IO 模型和各自的原理特點。IO 多路復用主要有三種實現方式,使用 Python 的 select 模塊提供的接口,根據Select, Poll, Epoll(Kqueue)實現服務端的流程。
第五節是三個簡單的圖片爬取程序,分別使用了同步阻塞方式,多線程方式,I/O異步方式。三種實現方式都有各自的優點和缺點。
第六節是講解使用回調方法的缺點,并且使用異步協程實現爬蟲,使用簡單的 Loop,Future,Task 等方式實現爬蟲,避免了大量的回調方法,結構更加清晰一點。
第七節是講解 yield from 的使用方式和運行原理,使用 AsyncSocket 類將客戶端套接字及其方法進行封裝,使用 yield from 做橋梁,調用者可以通過該語法結構和子協程進行數據交流。
第八節講解了異步事件庫,介紹Libevent,Libev,Libuv幾個事件庫的特點。pyuv 是為 libuv 提供了 python 模塊的接口,使用 pyuv 來實現異步爬蟲。
第九節實現了簡單的 EventLoop,Task 不斷驅動協程執行,EventLoop 監聽事件循環,又不斷驅動 Task 執行,Future 在協程的通道中傳輸數據,幾個部分配合合作完成整個流程。
第十節簡單介紹了裝飾器,然后講解 asyncio.coroutine 的實現原理和實現異步爬蟲。最后在實現的異步爬蟲,使用 async 和 await 關鍵字。至此實現了一個簡單的 asyncio,對 asyncio 的幾個比較重要的模塊做了簡單的實現,便于理解 asyncio 的原理。
第十一節講解 greenlet 的使用原理,greenlet 框架是 C 語言實現的一個 Python 擴展,在協程調用時會有上下文的切換,屬于微線程,但比真正的線程資源占用少。使用 greenlet 代替 yield 協程實現爬蟲。
第十二節和第十三節講解 gevent 的實現流程。gevent是基于 greenlet 實現異步調用。實現Watch,Loop,Hub,Waiter 等幾個主要的模塊。能大體了解 gevent 內部的實現過程。
第十四節講解 gevent 可以在不改變原有源代碼的基礎上,將同步執行修改成異步執行。使用 Monkey Patch 的方式實現,對代碼改造影響很小,性能卻有大量提升。
通過本小冊的學習,不僅僅是讓你掌握基本的 Python 異步開發,同時會了解其中的實現原理,并且會接觸到 Python 字節碼,協程,Socket 編程,Liunx I/O 模型,爬蟲實現,Gevent 原理。 將會接觸到很多的知識點,對于自己的知識面提升有很大的幫助。在以后的開發中,不僅知道實現的方法,還能知道實現的原理,這樣才能更快的開發出健壯的應用。
- 本課程知識點較多,學習過程中,需要有一定的 Python 基礎
- 需要具有 Python 網絡編程基礎和爬蟲基礎
- 本課程結構比較清晰,按照從易到難,先循漸進講解整個實現過程
- 學習后可以提升大家對于知識的理解和掌握,在以后的開發中能有更加深入的理解
適宜人群
- 從事 Python Web 開發的技術人員
- 對 Python 感興趣,想了解 Python 異步實現過程
- 在開發過程中,想使用異步方式提升 Python 性能的開發者
?
?
總結
以上是生活随笔為你收集整理的Python 异步网络编程实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel提示stdole32.tlb的
- 下一篇: 如何运行开源游戏?八分音符酱python