舉報

會員
Python進階編程:編寫更高效、優雅的Python代碼
最新章節:
16.6 本章小結
本書將幫助讀者系統掌握編寫高效、優雅的Python代碼的方法,快速成長為一位高水平的Python開發工程師。作者是Python編程領域的資深開發工程師,有多年的Python開發經驗,本書得到了行業里15位技術專家的高度評價。為了幫助讀者編寫出高效的Python代碼,本書不僅從源代碼的角度系統地講解了Python的語法,讓讀者能知其然并知其所以然,而且結合具體的應用需求,對并發編程、性能優化、測試與調試、異常處理、內存管理等Python開發中的高級知識進行了詳細的講解。為了指導讀者編寫出更優雅的Python代碼,本書針對具體問題給出了大量的實例代碼并給出了編碼風格上的方法和建議。如果你是沒有Python編程經驗的新人,你將通過本書系統掌握Python語法及其背后的原理,并從一開始就養成良好的編碼習慣;如果你是有一定Python編程經驗的老手,你將通過本書掌握各種Python編程中的高級知識,同時領略到優雅的編碼風格和技巧。
- 16.6 本章小結 更新時間:2021-04-30 12:40:37
- 16.5 實戰——爬蟲程序的性能優化
- 16.4.3 簡化
- 16.4.2 測量大O記號
- 16.4.1 測量回路復雜度
- 16.4 降低復雜度
- 16.3.2 剖析內存使用情況
- 16.3.1 剖析CPU使用情況
- 16.3 查找瓶頸
- 16.2.3 編寫速度測試代碼
- 16.2.2 度量硬件
- 16.2.1 尋找其他原因
- 16.2 優化策略
- 16.1.3 保證代碼易讀
- 16.1.2 從用戶的角度進行
- 16.1.1 先使程序可以正常工作
- 16.1 優化的規則
- 第16章 性能優化與實踐
- 15.6 本章小結
- 15.5 實戰——內存監控
- 15.4.3 Python中的標記——清除方法
- 15.4.2 分代垃圾收集
- 15.4.1 可收集對象鏈表
- 15.4 Python垃圾收集
- 15.3.2 三色標記模型
- 15.3.1 引用計數與垃圾收集
- 15.3 循環引用的垃圾收集
- 15.2.4 內存池
- 15.2.3 arena
- 15.2.2 pool
- 15.2.1 block
- 15.2 小塊空間的內存池
- 15.1 Python內存架構
- 第15章 Python的內存管理機制
- 14.6 本章小結
- 14.5 實戰——自然語言處理
- 14.4 加速程序運行
- 14.3 程序調試
- 14.2.6 警告信息
- 14.2.5 異常重新拋出
- 14.2.4 拋出新的異常
- 14.2.3 自定義異常
- 14.2.2 處理多個異常
- 14.2.1 捕獲所有異常
- 14.2 異常處理
- 14.1.6 測試失敗處理
- 14.1.5 性能測試
- 14.1.4 記錄測試結果
- 14.1.3 測試異常
- 14.1.2 對象打補丁
- 14.1.1 stdout輸出
- 14.1 測試
- 第14章 測試、調試和異常
- 13.11 本章小結
- 13.10 啟動Web瀏覽器
- 13.9 內存和CPU監測
- 13.8 實現計時器
- 13.7.2 函數庫增加日志功能
- 13.7.1 腳本增加日志功能
- 13.7 添加日志
- 13.6.4 配置文件讀取
- 13.6.3 文件查找
- 13.6.2 創建和解壓歸檔文件
- 13.6.1 文件和目錄的復制或移動
- 13.6 文件操作
- 13.5 執行外部命令
- 13.4 彈出密碼輸入提示
- 13.3 解析命令行選項
- 13.2 終止程序
- 13.1 腳本接收
- 第13章 腳本編程與系統管理
- 12.9 本章小結
- 12.8 守護進程
- 12.7 線程隊列輪詢
- 12.6 生成器代替線程
- 12.5 消息發布/訂閱模型
- 12.4 Actor任務定義
- 12.3 全局鎖問題
- 12.2 并行編程
- 12.1.7 創建線程池
- 12.1.6 線程狀態信息保存
- 12.1.5 防止死鎖
- 12.1.4 線程加鎖
- 12.1.3 線程間通信
- 12.1.2 線程判斷
- 12.1.1 線程的啟動與停止
- 12.1 線程處理
- 第12章 并發編程
- 11.11 本章小結
- 11.10 大型數組發送與接收
- 11.9 事件驅動的I/O
- 11.8 Socket文件描述符傳遞
- 11.7 客戶端認證
- 11.6 不同Python解釋器之間的交互
- 11.5.2 通過XML-RPC遠程調用
- 11.5.1 遠程方法調用
- 11.5 遠程調用
- 11.4 REST接口創建
- 11.3 通過CIDR地址生成對應的IP地址集
- 11.2.2 UDP服務器
- 11.2.1 TCP服務器
- 11.2 創建服務器
- 11.1 與HTTP服務交互
- 第11章 網絡編程
- 10.7 本章小結
- 10.6 分發包
- 10.5 創建新的Python環境
- 10.4 安裝私有的包
- 10.3 將文件夾加入sys.path
- 10.2 讀取包中的數據文件
- 10.1.6 導入模塊的同時修改模塊
- 10.1.5 遠程加載模塊
- 10.1.4 通過字符串名導入模塊
- 10.1.3 重新加載模塊
- 10.1.2 控制模塊的導入
- 10.1.1 模塊層級
- 10.1 模塊處理
- 第10章 模塊與包
- 9.14 本章小結
- 9.13 Python字節碼拆解
- 9.12 Python源碼解析
- 9.11 局部變量域中執行代碼
- 9.10 定義上下文管理器
- 9.9 避免重復的屬性方法
- 9.8 利用注解實現方法重載
- 9.7 初始化類的成員
- 9.6 以編程方式定義類
- 9.5 強制使用編程規約
- 9.4 強制參數簽名
- 9.3 類的屬性定義順序
- 9.2.2 元類定義可選參數
- 9.2.1 控制實例創建
- 9.2 元類
- 9.1.12 擴充類的功能
- 9.1.11 給函數增加參數
- 9.1.10 類和靜態方法的裝飾器
- 9.1.9 裝飾器定義為類
- 9.1.8 類中定義裝飾器
- 9.1.7 函數的類型檢查
- 9.1.6 帶可選參數的裝飾器
- 9.1.5 裝飾器自定義屬性
- 9.1.4 帶參數的裝飾器
- 9.1.3 解除裝飾器
- 9.1.2 裝飾器中保留函數元信息
- 9.1.1 函數添加裝飾器
- 9.1 裝飾器
- 第9章 元編程
- 8.16 本章小結
- 8.15 創建緩存
- 8.14 數據結構的內存管理
- 8.13.2 不用遞歸實現訪問者模式
- 8.13.1 訪問者模式
- 8.13 設計模式處理
- 8.12 狀態對象實現
- 8.11 利用Mixin擴展類功能
- 8.10 不調用init方法的實例創建
- 8.9 自定義容器
- 8.8 數據模型的類型約束
- 8.7 接口或者抽象基類定義
- 8.6 數據結構的初始化
- 8.5.3 屬性的代理訪問
- 8.5.2 延遲計算屬性
- 8.5.1 可管理屬性創建
- 8.5 屬性處理
- 8.4.6 類中的比較操作
- 8.4.5 定義多個構造器
- 8.4.4 創建新的類或實例屬性
- 8.4.3 擴展property
- 8.4.2 調用父類方法
- 8.4.1 封裝屬性名
- 8.4 類的處理
- 8.3 上下文管理協議
- 8.2 自定義格式化字符串
- 8.1.3 由字符串調用對象
- 8.1.2 有效創建大量對象
- 8.1.1 對象顯示
- 8.1 對象處理
- 第8章 類與對象
- 7.7 本章小結
- 7.6.2 內聯回調函數
- 7.6.1 有額外狀態信息的回調函數
- 7.6 回調函數
- 7.5 類轉換為函數
- 7.4.2 訪問閉包中定義的變量
- 7.4.1 匿名函數捕獲變量值
- 7.4 變量處理
- 7.3 返回多個值的函數
- 7.2.4 減少參數個數
- 7.2.3 為參數增加元信息
- 7.2.2 接收關鍵字參數
- 7.2.1 接收任意數量參數
- 7.2 函數的參數
- 7.1.2 匿名或內聯函數定義
- 7.1.1 有默認參數的函數定義
- 7.1 函數定義
- 第7章 函數
- 6.6 本章小結
- 6.5.2 編碼/解碼Base64數據
- 6.5.1 十六進制數編碼和解碼
- 6.5 編碼/解碼
- 6.4 與關系型數據庫的交互
- 6.3 字典轉換為XML
- 6.2.3 修改XML
- 6.2.2 解析XML文檔
- 6.2.1 簡單XML數據解析
- 6.2 XML數據解析
- 6.1.4 嵌套和可變長二進制數據讀取
- 6.1.3 二進制數組數據讀/寫
- 6.1.2 JSON數據讀/寫
- 6.1.1 CSV數據讀/寫
- 6.1 數據讀/寫
- 第6章 數據編碼及處理
- 5.8 本章小結
- 5.7 對象序列化
- 5.6 串行端口的數據通信
- 5.5 可變緩沖區中二進制數據的讀取
- 5.4 字符串的I/O操作
- 5.3 使用分隔符或行終止符打印
- 5.2.12 二進制文件映射
- 5.2.11 文件迭代
- 5.2.10 創建臨時文件和文件夾
- 5.2.9 文件描述符包裝
- 5.2.8 在文本文件中寫入字節
- 5.2.7 文件編碼變更
- 5.2.6 打印不合法的文件名
- 5.2.5 忽略文件名編碼
- 5.2.4 文件列表獲取
- 5.2.3 文件檢查
- 5.2.2 操作文件路徑名
- 5.2.1 文件的寫入
- 5.2 文件操作
- 5.1.3 讀/寫壓縮文件
- 5.1.2 讀/寫字節數據
- 5.1.1 讀/寫文本數據
- 5.1 讀/寫操作
- 第5章 文件與I/O
- 4.6 本章小結
- 4.5 展開嵌套的序列
- 4.4 創建數據處理管道
- 4.3 帶有外部狀態的生成器函數
- 4.2 使用生成器創建新的迭代模式
- 4.1.12 迭代器代替while無限循環
- 4.1.11 順序迭代合并后的排序迭代對象
- 4.1.10 集合元素的迭代
- 4.1.9 多個序列迭代
- 4.1.8 序列上索引值迭代
- 4.1.7 排列組合的迭代
- 4.1.6 跳過可迭代對象的開始部分
- 4.1.5 迭代器切片
- 4.1.4 反向迭代
- 4.1.3 實現迭代協議
- 4.1.2 代理迭代
- 4.1.1 手動遍歷迭代器
- 4.1 迭代操作
- 第4章 迭代器與生成器
- 3.8 本章小結
- 3.7 排序不支持原生比較的對象
- 3.6 命名切片
- 3.5 實現一個優先級隊列
- 3.4 查找最大或最小的N個元素
- 3.3.3 記錄分組
- 3.3.2 保留最后N個元素
- 3.3.1 可迭代對象解壓
- 3.3 可迭代對象操作
- 3.2.8 字典合并
- 3.2.7 字典提取
- 3.2.6 通過關鍵字排序字典
- 3.2.5 字典查找
- 3.2.4 字典運算
- 3.2.3 字典排序
- 3.2.2 字典映射
- 3.2.1 字典對象解析
- 3.2 字典
- 3.1.7 轉換并計算數據
- 3.1.6 序列元素名稱映射
- 3.1.5 過濾序列元素
- 3.1.4 序列元素統計
- 3.1.3 序列去重并保持順序
- 3.1.2 序列解壓
- 3.1.1 序列對象解析
- 3.1 序列
- 第3章 數據結構
- 2.10 本章小結
- 2.9 字節字符串操作
- 2.8 簡單的遞歸下降分析器實現
- 2.7 令牌解析
- 2.6 在正則表達式中使用Unicode字符
- 2.5 將Unicode文本標準化
- 2.4.2 字符串忽略大小寫的搜索替換
- 2.4.1 字符串搜索替換
- 2.4 字符串搜索
- 2.3.5 多行匹配
- 2.3.4 最短匹配
- 2.3.3 字符串匹配和搜索
- 2.3.2 用Shell通配符匹配字符串
- 2.3.1 字符串開頭或結尾匹配
- 2.3 字符串匹配
- 2.2.8 處理HTML和XML文本
- 2.2.7 字符串格式化
- 2.2.6 字符串插入
- 2.2.5 字符串拼接
- 2.2.4 字符串對齊
- 2.2.3 字符串清理
- 2.2.2 刪除不需要的字符
- 2.2.1 字符串分割
- 2.2 字符串操作
- 2.1.2 字符串操作效率
- 2.1.1 字符串對象的intern機制
- 2.1 字符串對象解析
- 第2章 字符串
- 1.8 本章小結
- 1.7 隨機數
- 1.6 無窮大與NaN
- 1.5 字節到大整數的打包與解包
- 1.4.6 矩陣與線性代數運算
- 1.4.5 大型數組運算
- 1.4.4 分數運算
- 1.4.3 復數運算
- 1.4.2 浮點數運算
- 1.4.1 四舍五入運算
- 1.4 數字運算
- 1.3 進制轉換
- 1.2 數字格式化輸出
- 1.1.3 大整數對象
- 1.1.2 小整數對象
- 1.1.1 PyLongObject對象
- 1.1 整數對象
- 第1章 數字對象
- 0.4 本章小結
- 0.3.10 引用計數
- 0.3.9 對象的多態性
- 0.3.8 對象的行為
- 0.3.7 對象的創建
- 0.3.6 類型的類型
- 0.3.5 類型對象
- 0.3.4 定長對象和變長對象
- 0.3.3 對象機制的基石——PyObject
- 0.3.2 對象的分類
- 0.3.1 Python內的對象
- 0.3 Python對象初探
- 0.2 Python源碼組織
- 0.1 Python總體架構
- 第0章 Python總覽
- 前言
- 推薦序二
- 推薦序一
- 推薦語
- 版權信息
- 封面
- 封面
- 版權信息
- 推薦語
- 推薦序一
- 推薦序二
- 前言
- 第0章 Python總覽
- 0.1 Python總體架構
- 0.2 Python源碼組織
- 0.3 Python對象初探
- 0.3.1 Python內的對象
- 0.3.2 對象的分類
- 0.3.3 對象機制的基石——PyObject
- 0.3.4 定長對象和變長對象
- 0.3.5 類型對象
- 0.3.6 類型的類型
- 0.3.7 對象的創建
- 0.3.8 對象的行為
- 0.3.9 對象的多態性
- 0.3.10 引用計數
- 0.4 本章小結
- 第1章 數字對象
- 1.1 整數對象
- 1.1.1 PyLongObject對象
- 1.1.2 小整數對象
- 1.1.3 大整數對象
- 1.2 數字格式化輸出
- 1.3 進制轉換
- 1.4 數字運算
- 1.4.1 四舍五入運算
- 1.4.2 浮點數運算
- 1.4.3 復數運算
- 1.4.4 分數運算
- 1.4.5 大型數組運算
- 1.4.6 矩陣與線性代數運算
- 1.5 字節到大整數的打包與解包
- 1.6 無窮大與NaN
- 1.7 隨機數
- 1.8 本章小結
- 第2章 字符串
- 2.1 字符串對象解析
- 2.1.1 字符串對象的intern機制
- 2.1.2 字符串操作效率
- 2.2 字符串操作
- 2.2.1 字符串分割
- 2.2.2 刪除不需要的字符
- 2.2.3 字符串清理
- 2.2.4 字符串對齊
- 2.2.5 字符串拼接
- 2.2.6 字符串插入
- 2.2.7 字符串格式化
- 2.2.8 處理HTML和XML文本
- 2.3 字符串匹配
- 2.3.1 字符串開頭或結尾匹配
- 2.3.2 用Shell通配符匹配字符串
- 2.3.3 字符串匹配和搜索
- 2.3.4 最短匹配
- 2.3.5 多行匹配
- 2.4 字符串搜索
- 2.4.1 字符串搜索替換
- 2.4.2 字符串忽略大小寫的搜索替換
- 2.5 將Unicode文本標準化
- 2.6 在正則表達式中使用Unicode字符
- 2.7 令牌解析
- 2.8 簡單的遞歸下降分析器實現
- 2.9 字節字符串操作
- 2.10 本章小結
- 第3章 數據結構
- 3.1 序列
- 3.1.1 序列對象解析
- 3.1.2 序列解壓
- 3.1.3 序列去重并保持順序
- 3.1.4 序列元素統計
- 3.1.5 過濾序列元素
- 3.1.6 序列元素名稱映射
- 3.1.7 轉換并計算數據
- 3.2 字典
- 3.2.1 字典對象解析
- 3.2.2 字典映射
- 3.2.3 字典排序
- 3.2.4 字典運算
- 3.2.5 字典查找
- 3.2.6 通過關鍵字排序字典
- 3.2.7 字典提取
- 3.2.8 字典合并
- 3.3 可迭代對象操作
- 3.3.1 可迭代對象解壓
- 3.3.2 保留最后N個元素
- 3.3.3 記錄分組
- 3.4 查找最大或最小的N個元素
- 3.5 實現一個優先級隊列
- 3.6 命名切片
- 3.7 排序不支持原生比較的對象
- 3.8 本章小結
- 第4章 迭代器與生成器
- 4.1 迭代操作
- 4.1.1 手動遍歷迭代器
- 4.1.2 代理迭代
- 4.1.3 實現迭代協議
- 4.1.4 反向迭代
- 4.1.5 迭代器切片
- 4.1.6 跳過可迭代對象的開始部分
- 4.1.7 排列組合的迭代
- 4.1.8 序列上索引值迭代
- 4.1.9 多個序列迭代
- 4.1.10 集合元素的迭代
- 4.1.11 順序迭代合并后的排序迭代對象
- 4.1.12 迭代器代替while無限循環
- 4.2 使用生成器創建新的迭代模式
- 4.3 帶有外部狀態的生成器函數
- 4.4 創建數據處理管道
- 4.5 展開嵌套的序列
- 4.6 本章小結
- 第5章 文件與I/O
- 5.1 讀/寫操作
- 5.1.1 讀/寫文本數據
- 5.1.2 讀/寫字節數據
- 5.1.3 讀/寫壓縮文件
- 5.2 文件操作
- 5.2.1 文件的寫入
- 5.2.2 操作文件路徑名
- 5.2.3 文件檢查
- 5.2.4 文件列表獲取
- 5.2.5 忽略文件名編碼
- 5.2.6 打印不合法的文件名
- 5.2.7 文件編碼變更
- 5.2.8 在文本文件中寫入字節
- 5.2.9 文件描述符包裝
- 5.2.10 創建臨時文件和文件夾
- 5.2.11 文件迭代
- 5.2.12 二進制文件映射
- 5.3 使用分隔符或行終止符打印
- 5.4 字符串的I/O操作
- 5.5 可變緩沖區中二進制數據的讀取
- 5.6 串行端口的數據通信
- 5.7 對象序列化
- 5.8 本章小結
- 第6章 數據編碼及處理
- 6.1 數據讀/寫
- 6.1.1 CSV數據讀/寫
- 6.1.2 JSON數據讀/寫
- 6.1.3 二進制數組數據讀/寫
- 6.1.4 嵌套和可變長二進制數據讀取
- 6.2 XML數據解析
- 6.2.1 簡單XML數據解析
- 6.2.2 解析XML文檔
- 6.2.3 修改XML
- 6.3 字典轉換為XML
- 6.4 與關系型數據庫的交互
- 6.5 編碼/解碼
- 6.5.1 十六進制數編碼和解碼
- 6.5.2 編碼/解碼Base64數據
- 6.6 本章小結
- 第7章 函數
- 7.1 函數定義
- 7.1.1 有默認參數的函數定義
- 7.1.2 匿名或內聯函數定義
- 7.2 函數的參數
- 7.2.1 接收任意數量參數
- 7.2.2 接收關鍵字參數
- 7.2.3 為參數增加元信息
- 7.2.4 減少參數個數
- 7.3 返回多個值的函數
- 7.4 變量處理
- 7.4.1 匿名函數捕獲變量值
- 7.4.2 訪問閉包中定義的變量
- 7.5 類轉換為函數
- 7.6 回調函數
- 7.6.1 有額外狀態信息的回調函數
- 7.6.2 內聯回調函數
- 7.7 本章小結
- 第8章 類與對象
- 8.1 對象處理
- 8.1.1 對象顯示
- 8.1.2 有效創建大量對象
- 8.1.3 由字符串調用對象
- 8.2 自定義格式化字符串
- 8.3 上下文管理協議
- 8.4 類的處理
- 8.4.1 封裝屬性名
- 8.4.2 調用父類方法
- 8.4.3 擴展property
- 8.4.4 創建新的類或實例屬性
- 8.4.5 定義多個構造器
- 8.4.6 類中的比較操作
- 8.5 屬性處理
- 8.5.1 可管理屬性創建
- 8.5.2 延遲計算屬性
- 8.5.3 屬性的代理訪問
- 8.6 數據結構的初始化
- 8.7 接口或者抽象基類定義
- 8.8 數據模型的類型約束
- 8.9 自定義容器
- 8.10 不調用init方法的實例創建
- 8.11 利用Mixin擴展類功能
- 8.12 狀態對象實現
- 8.13 設計模式處理
- 8.13.1 訪問者模式
- 8.13.2 不用遞歸實現訪問者模式
- 8.14 數據結構的內存管理
- 8.15 創建緩存
- 8.16 本章小結
- 第9章 元編程
- 9.1 裝飾器
- 9.1.1 函數添加裝飾器
- 9.1.2 裝飾器中保留函數元信息
- 9.1.3 解除裝飾器
- 9.1.4 帶參數的裝飾器
- 9.1.5 裝飾器自定義屬性
- 9.1.6 帶可選參數的裝飾器
- 9.1.7 函數的類型檢查
- 9.1.8 類中定義裝飾器
- 9.1.9 裝飾器定義為類
- 9.1.10 類和靜態方法的裝飾器
- 9.1.11 給函數增加參數
- 9.1.12 擴充類的功能
- 9.2 元類
- 9.2.1 控制實例創建
- 9.2.2 元類定義可選參數
- 9.3 類的屬性定義順序
- 9.4 強制參數簽名
- 9.5 強制使用編程規約
- 9.6 以編程方式定義類
- 9.7 初始化類的成員
- 9.8 利用注解實現方法重載
- 9.9 避免重復的屬性方法
- 9.10 定義上下文管理器
- 9.11 局部變量域中執行代碼
- 9.12 Python源碼解析
- 9.13 Python字節碼拆解
- 9.14 本章小結
- 第10章 模塊與包
- 10.1 模塊處理
- 10.1.1 模塊層級
- 10.1.2 控制模塊的導入
- 10.1.3 重新加載模塊
- 10.1.4 通過字符串名導入模塊
- 10.1.5 遠程加載模塊
- 10.1.6 導入模塊的同時修改模塊
- 10.2 讀取包中的數據文件
- 10.3 將文件夾加入sys.path
- 10.4 安裝私有的包
- 10.5 創建新的Python環境
- 10.6 分發包
- 10.7 本章小結
- 第11章 網絡編程
- 11.1 與HTTP服務交互
- 11.2 創建服務器
- 11.2.1 TCP服務器
- 11.2.2 UDP服務器
- 11.3 通過CIDR地址生成對應的IP地址集
- 11.4 REST接口創建
- 11.5 遠程調用
- 11.5.1 遠程方法調用
- 11.5.2 通過XML-RPC遠程調用
- 11.6 不同Python解釋器之間的交互
- 11.7 客戶端認證
- 11.8 Socket文件描述符傳遞
- 11.9 事件驅動的I/O
- 11.10 大型數組發送與接收
- 11.11 本章小結
- 第12章 并發編程
- 12.1 線程處理
- 12.1.1 線程的啟動與停止
- 12.1.2 線程判斷
- 12.1.3 線程間通信
- 12.1.4 線程加鎖
- 12.1.5 防止死鎖
- 12.1.6 線程狀態信息保存
- 12.1.7 創建線程池
- 12.2 并行編程
- 12.3 全局鎖問題
- 12.4 Actor任務定義
- 12.5 消息發布/訂閱模型
- 12.6 生成器代替線程
- 12.7 線程隊列輪詢
- 12.8 守護進程
- 12.9 本章小結
- 第13章 腳本編程與系統管理
- 13.1 腳本接收
- 13.2 終止程序
- 13.3 解析命令行選項
- 13.4 彈出密碼輸入提示
- 13.5 執行外部命令
- 13.6 文件操作
- 13.6.1 文件和目錄的復制或移動
- 13.6.2 創建和解壓歸檔文件
- 13.6.3 文件查找
- 13.6.4 配置文件讀取
- 13.7 添加日志
- 13.7.1 腳本增加日志功能
- 13.7.2 函數庫增加日志功能
- 13.8 實現計時器
- 13.9 內存和CPU監測
- 13.10 啟動Web瀏覽器
- 13.11 本章小結
- 第14章 測試、調試和異常
- 14.1 測試
- 14.1.1 stdout輸出
- 14.1.2 對象打補丁
- 14.1.3 測試異常
- 14.1.4 記錄測試結果
- 14.1.5 性能測試
- 14.1.6 測試失敗處理
- 14.2 異常處理
- 14.2.1 捕獲所有異常
- 14.2.2 處理多個異常
- 14.2.3 自定義異常
- 14.2.4 拋出新的異常
- 14.2.5 異常重新拋出
- 14.2.6 警告信息
- 14.3 程序調試
- 14.4 加速程序運行
- 14.5 實戰——自然語言處理
- 14.6 本章小結
- 第15章 Python的內存管理機制
- 15.1 Python內存架構
- 15.2 小塊空間的內存池
- 15.2.1 block
- 15.2.2 pool
- 15.2.3 arena
- 15.2.4 內存池
- 15.3 循環引用的垃圾收集
- 15.3.1 引用計數與垃圾收集
- 15.3.2 三色標記模型
- 15.4 Python垃圾收集
- 15.4.1 可收集對象鏈表
- 15.4.2 分代垃圾收集
- 15.4.3 Python中的標記——清除方法
- 15.5 實戰——內存監控
- 15.6 本章小結
- 第16章 性能優化與實踐
- 16.1 優化的規則
- 16.1.1 先使程序可以正常工作
- 16.1.2 從用戶的角度進行
- 16.1.3 保證代碼易讀
- 16.2 優化策略
- 16.2.1 尋找其他原因
- 16.2.2 度量硬件
- 16.2.3 編寫速度測試代碼
- 16.3 查找瓶頸
- 16.3.1 剖析CPU使用情況
- 16.3.2 剖析內存使用情況
- 16.4 降低復雜度
- 16.4.1 測量回路復雜度
- 16.4.2 測量大O記號
- 16.4.3 簡化
- 16.5 實戰——爬蟲程序的性能優化
- 16.6 本章小結 更新時間:2021-04-30 12:40:37