asyncio

1/2ページ

Python中使用asyncio 封裝檔案讀寫

前言 和網路 IO 一樣,檔案讀寫同樣是一個費事的操作。 預設情況下,Python 使用的是系統的阻塞讀寫。這意味著在 asyncio 中如果呼叫了 f = file('xx') f.read() 會阻塞事件迴圈。 本篇簡述如何用 asyncio.Future 物件來封裝檔案的非同步讀寫。 程式碼在 […]

基於asyncio 非同步協程框架實現收集B站直播彈幕

前言 雖然標題是全站,但目前只做了等級 top 100 直播間的全天彈幕收集。 彈幕收集系統基於之前的B 站直播彈幕姬 Python 版修改而來。具體協議分析可以看上一篇文章。 直播彈幕協議是直接基於 TCP 協議,所以如果 B 站對類似我這種行為做反制措施,比較困難。應該有我不知道的技術手段來檢測 […]

Python使用asyncio包處理併發詳解

阻塞型I/O和GIL CPython 直譯器本身就不是執行緒安全的,因此有全域性直譯器鎖(GIL),一次只允許使用一個執行緒執行 Python 位元組碼。因此,一個 Python 程序通常不能同時使用多個 CPU 核心。 然而,標準庫中所有執行阻塞型 I/O 操作的函式,在等待作業系統返回結果時都會 […]

python併發2之使用asyncio處理併發

asyncio 在Python 2的時代,高效能的網路程式設計主要是使用Twisted、Tornado和Gevent這三個庫,但是它們的非同步程式碼相互之間既不相容也不能移植。如上一節說的,Gvanrossum希望在Python 3 實現一個原生的基於生成器的協程庫,其中直接內建了對非同步IO的支援 […]

詳解python中asyncio模組

一直對asyncio這個庫比較感興趣,畢竟這是官網也非常推薦的一個實現高併發的一個模組,python也是在python 3.4中引入了協程的概念。也通過這次整理更加深刻理解這個模組的使用 asyncio 是幹什麼的? 非同步網路操作併發協程 python3.0時代,標準庫裡的非同步網路模組:sele […]

【妙用協程】 – 協程當然可以用來處理I/O阻塞問題

前面講的兩個協程的用途,一個是用來使用協程表達工作流裡的流程的概念,一個是用協程來表達一個動畫的播放過程。總結起來,就是用協程來解決帶有流程阻塞的程式碼邏輯組織的問題。但是協程並不是生來幹這個的,協程最主流的用途是一種用於處理I/O阻塞的工具。I/O阻塞的挑戰是多重的,一方面是有很多人研究高併發低延 […]

Python 的非同步 IO:Asyncio 簡介

所謂「非同步 IO」,就是你發起一個 IO 操作,卻不用等它結束,你可以繼續做其他事情,當它結束時,你會得到通知。 Asyncio 是併發(concurrency)的一種方式。對 Python 來說,併發還可以通過執行緒(threading)和多程序(multiprocessing)來實現。 Asy […]