1、大資料的檔案讀取
① 利用生成器generator
②迭代器進行迭代遍歷:for line in file
2、迭代器和生成器的區別
1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dict、tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後臺for語句對容器物件呼叫iter()函式,iter()是python的內建函式。iter()會返回一個定義了next()方法的迭代器物件,它在容器中逐個訪問容器內元素,next()也是python的內建函式。在沒有後續元素時,next()會丟擲一個StopIteration異常
2)生成器(Generator)是建立迭代器的簡單而強大的工具。它們寫起來就像是正規的函式,只是在需要返回資料的時候使用yield語句。每次next()被呼叫時,生成器會返回它脫離的位置(它記憶語句最後一次執行的位置和所有的資料值)
區別:生成器能做到迭代器能做的所有事,而且因為自動建立了__iter__()和next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表示式取代列表解析可以同時節省記憶體。除了建立和儲存程式狀態的自動方法,當發生器終結時,還會自動丟擲StopIteration異常
3、裝飾器的作用和功能:
引入日誌
函式執行時間統計
執行函式前預備處理
執行函式後的清理功能
許可權校驗等場景
快取
4、簡單談下GIL:
Global Interpreter Lock(全域性直譯器鎖)
Python程式碼的執行由Python 虛擬機器(也叫直譯器主迴圈,CPython版本)來控制,Python 在設計之初就考慮到要在直譯器的主迴圈中,同時只有一個執行緒在執行,即在任意時刻,只有一個執行緒在直譯器中執行。對Python 虛擬機器的訪問由全域性直譯器鎖(GIL)來控制,正是這個鎖能保證同一時刻只有一個執行緒在執行。
在多執行緒環境中,Python 虛擬機器按以下方式執行:
1. 設定GIL
2. 切換到一個執行緒去執行
3. 執行:
a. 指定數量的位元組碼指令,或者
b. 執行緒主動讓出控制(可以呼叫time.sleep(0))
4. 把執行緒設定為睡眠狀態
5. 解鎖GIL
6. 再次重複以上所有步驟
在呼叫外部程式碼(如C/C++擴充套件函式)的時候,GIL 將會被鎖定,直到這個函式結束為止(由於在這期間沒有Python 的位元組碼被執行,所以不會做執行緒切換)。
5、find和grep
grep命令是一種強大的文字搜尋工具,grep搜尋內容串可以是正規表示式,允許對文字檔案進行模式查詢。如果找到匹配模式,grep列印包含模式的所有行。
find通常用來再特定的目錄下搜尋符合條件的檔案,也可以用來搜尋特定使用者屬主的檔案。
未完待續…………
寫在最後
前幾天有私信我要Python的學習資料,我連夜整理了一些有深度的Python教程和參考資料,從入門到高階的都有,檔案已經打包好了,正在學習Python的同學可以免費下載學習學習。檔案下載方式:點選我的頭像,關注後私信回覆「資料」即可下載。首先把程式碼擼起來!首先把程式碼擼起來!首先把程式碼擼起來!重要的事說三遍,哈哈。「程式設計是門手藝活」。什麼意思?得練啊。