天天看點

Python 第七章 IO程式設計

IO程式設計

IO在計算機中指的是input/output,也就是輸入和輸出。由于資料運作時實在記憶體中駐留,由CPU這個超快的計算核心來執行,涉及到資料交換的地方,通常磁盤網絡等,就需要IO接口。

對于本機來說,往外的叫做Output,從外面接收的叫做Input。是以,程式完成IO操作會有Input和Output兩個資料流。當然也有隻用一個的情況,比如,從磁盤讀取檔案到記憶體,就隻有Input,反過來,把資料寫到磁盤中,就隻有Output操作。

IO程式設計中,流(stream)是一個很重要的概念。Input Stream就是資料從外面流到記憶體。反之,資料從記憶體流出就是Output stream。

由于CPU和記憶體的速度遠遠高于外設的速度,是以,在IO程式設計中,存在速度不比對的問題。如何解決這種問題,存在兩種解決方法:

第一種,CPU等着,也就是程式暫停執行後續代碼,這種模式成為同步IO。

另外一種是,CPU不等待,後續代碼可以繼續執行,這種成為異步IO。

同步和異步的差別在于是否等待IO的執行結果。

很明顯,異步IO寫出來的程式性能遠高于同步IO,但是異步IO的問題是程式設計模型複雜。異步IO的複雜度遠高于同步IO。

操作IO的能力是由操作系提供的,每一種程式設計語言都會把作業系統提供的低級C語言接口封裝起來友善實用,Python也不例外。我們後邊會詳細講解Python的IO程式設計接口。

注,本章的IO程式設計都是同步IO,異步IO複雜度太高,後續涉及到伺服器端程式開發在讨論。