日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計Python asyncio并發(fā)編程

Python asyncio并發(fā)編程

Python asyncio并發(fā)編程

定 價:¥128.00

作 者: [英]馬修·福勒(Matthew Fowler)著,殷海英 譯
出版社: 清華大學(xué)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787302622833 出版時間: 2023-01-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  標(biāo)準(zhǔn)Python程序很容易過載,從而出現(xiàn)慢如龜爬的情況。asyncio庫正是為了解決這些問題而構(gòu)建的,它簡化了任務(wù)的劃分和調(diào)度。asyncio可無縫地同時處理多個操作,使應(yīng)用程序疾如閃電,且具有擴展性?! 禤ython asyncio并發(fā)編程》在大量示例的引導(dǎo)下,介紹異步、并行和并發(fā)編程。將難理解的并發(fā)內(nèi)容分解為簡明易懂的流程圖,使讀者可輕松了解任務(wù)的運行方式。在本書中,讀者將學(xué)習(xí)如何使用asyncio來突破Python的限制,從而加快Web服務(wù)器和微服務(wù)的運行速度。讀者甚至可將asyncio與傳統(tǒng)的多處理技術(shù)結(jié)合起來,以大幅提升性能。主要內(nèi)容● 通過aiohttp構(gòu)建支持并發(fā)Web請求的Web API● 同時運行海量SQL查詢● 創(chuàng)建一個可并行處理數(shù)GB數(shù)據(jù)的map-reduce作業(yè)● 在asyncio中使用線程來混合阻塞代碼和asyncio代碼

作者簡介

  Matthew Fowler擁有近20年的軟件工程經(jīng)驗,曾任軟件架構(gòu)師、工程總監(jiān)等多個職位。他起初為科學(xué)應(yīng)用程序編寫軟件,然后轉(zhuǎn)向全棧Web開發(fā)和分布式系統(tǒng),終領(lǐng)導(dǎo)多個開發(fā)人員和管理人員團隊為擁有數(shù)千萬用戶的電子商務(wù)網(wǎng)站編寫應(yīng)用程序及構(gòu)建系統(tǒng)。他與妻子Kathy住在馬薩諸塞州的列克星敦。

圖書目錄


第1 章  asyncio簡介 1
1.1  什么是asyncio 2
1.2  什么是I/O密集型和CPU密集型 3
1.3  了解并發(fā)、并行和多任務(wù)處理 4
1.3.1  并發(fā) 4
1.3.2  并行 5
1.3.3  并行與并發(fā)的區(qū)別 6
1.3.4  什么是多任務(wù) 6
1.3.5  協(xié)同多任務(wù)處理的優(yōu)勢 7
1.4  了解進程、線程、多線程和多處理 7
1.4.1  進程 7
1.4.2  線程 8
1.5  理解全局解釋器鎖 11
1.5.1  GIL會釋放嗎 15
1.5.2  asyncio和GIL 17
1.6  單線程并發(fā) 17
1.7  事件循環(huán)的工作原理 20
1.8  本章小結(jié) 22
第2 章  asyncio基礎(chǔ) 23
2.1  關(guān)于協(xié)程 23
2.1.1  使用async關(guān)鍵字創(chuàng)建協(xié)程 24
2.1.2  使用await關(guān)鍵字暫停執(zhí)行 26
2.2  使用sleep引入長時間運行的協(xié)程 27
2.3  通過任務(wù)實現(xiàn)并行 30
2.3.1  創(chuàng)建任務(wù) 30
2.3.2  同時運行多個任務(wù) 31
2.4  取消任務(wù)和設(shè)置超時 34
2.4.1  取消任務(wù) 34
2.4.2  設(shè)置超時并使用wait_for
執(zhí)行取消 36
2.5  任務(wù)、協(xié)程、future和awaitable 38
2.5.1  關(guān)于future 38
2.5.2  future、任務(wù)和協(xié)程之間的關(guān)系 40
2.6  使用裝飾器測量協(xié)程執(zhí)行時間 41
2.7  協(xié)程和任務(wù)的陷阱 43
2.7.1  運行CPU密集型代碼 44
2.7.2  運行阻塞API 46
2.8  手動創(chuàng)建和訪問事件循環(huán) 47
2.8.1  手動創(chuàng)建事件循環(huán) 47
2.8.2  訪問事件循環(huán) 48
2.9  使用調(diào)試模式 49
2.9.1  使用asyncio.run 49
2.9.2  使用命令行參數(shù) 49
2.9.3  使用環(huán)境變量 50
2.10  本章小結(jié) 51
第3 章  個asyncio應(yīng)用程序 53
3.1  使用阻塞套接字 54
3.2  使用telnet連接到服務(wù)器 56
3.2.1  從套接字讀取和寫入數(shù)據(jù) 57
3.2.2  允許多個連接和阻塞的危險性 59
3.3  使用非阻塞套接字 61
3.4  使用選擇器模塊構(gòu)建套接字事件循環(huán) 65
3.5  使用asyncio事件循環(huán)的
回顯服務(wù)器 68
3.5.1  套接字的事件循環(huán)協(xié)程 69
3.5.2  設(shè)計一個異步回顯服務(wù)器 69
3.5.3  解決任務(wù)中的錯誤 72
3.6  正常關(guān)閉 74
3.6.1  監(jiān)聽信號 74
3.6.2  等待掛起的任務(wù)完成 76
3.7  本章小結(jié) 79
第4 章  并發(fā)網(wǎng)絡(luò)請求 81
4.1  aiohttp 82
4.2  異步上下文管理器 82
4.2.1  使用aiohttp發(fā)出Web請求 85
4.2.2  使用aiohttp設(shè)置超時 87
4.3  并發(fā)運行任務(wù)及重新訪問 88
4.4  通過gather執(zhí)行并發(fā)請求 91
4.5  在請求完成時立即處理 95
4.6  使用wait進行細粒度控制 99
4.6.1  等待所有任務(wù)完成 99
4.6.2  觀察異常 102
4.6.3  當(dāng)任務(wù)完成時處理結(jié)果 104
4.6.4  處理超時 107
4.6.5  為什么要將所有內(nèi)容都包裝在一個任務(wù)中 109
4.7  本章小結(jié) 110
第5 章  非阻塞數(shù)據(jù)庫驅(qū)動程序 111
5.1  關(guān)于asyncpg 111
5.2  連接Postgres數(shù)據(jù)庫 112
5.3  定義數(shù)據(jù)庫模式 113
5.4  使用asyncpg執(zhí)行查詢 116
5.5  通過連接池實現(xiàn)并發(fā)查詢 119
5.5.1  將隨機sku插入products數(shù)據(jù)庫 119
5.5.2  創(chuàng)建連接池從而同時運行查詢 123
5.6  使用asyncpg管理事務(wù) 128
5.6.1  嵌套事務(wù) 130
5.6.2  手動管理事務(wù) 132
5.7  異步生成器和流式結(jié)果集 133
5.7.1  異步生成器介紹 134
5.7.2  使用帶有流游標(biāo)的異步生成器 135
5.8  本章小結(jié) 139
第6 章  處理CPU密集型工作 141
6.1  介紹multiprocessing庫 142
6.2  使用進程池 144
6.3  進程池執(zhí)行器與asyncio 146
6.3.1  進程池執(zhí)行器 146
6.3.2  帶有異步事件循環(huán)的進程池執(zhí)行器 148
6.4  使用asyncio解決MapReduce的問題 149
6.4.1  簡單的MapReduce示例 151
6.4.2  Google Books Ngram數(shù)據(jù)集 153
6.4.3  使用asyncio進行映射和歸約 154
6.5  共享數(shù)據(jù)和鎖 159
6.5.1  共享數(shù)據(jù)和競爭條件 160
6.5.2  使用鎖進行同步 163
6.5.3  與進程池共享數(shù)據(jù) 166
6.6  多進程,多事件循環(huán) 170
6.7  本章小結(jié) 173
第7 章  通過線程處理阻塞任務(wù) 175
7.1  threading模塊 176
7.2  通過asyncio使用線程 180
7.2.1  request庫 180
7.2.2  線程池執(zhí)行器 181
7.2.3  使用asyncio的線程池執(zhí)行器 183
7.2.4  默認(rèn)執(zhí)行器 184
7.3  鎖、共享數(shù)據(jù)和死鎖 186
7.3.1  可重入鎖 188
7.3.2  死鎖 190
7.4  單線程中的事件循環(huán) 192
7.4.1  Tkinter 193
7.4.2  使用asyncio和線程構(gòu)建響應(yīng)式UI 195
7.5  使用線程執(zhí)行CPU密集型工作 203
7.5.1  多線程與hashlib 203
7.5.2  多線程與NumPy 206
7.6  本章小結(jié) 208
第8 章  流 211
8.1  流 212
8.2  傳輸和協(xié)議 212
8.3  流讀取與流寫入 216
8.4  非阻塞命令行輸入 219
8.5  創(chuàng)建服務(wù)器 230
8.6  創(chuàng)建聊天服務(wù)器和客戶端 232
8.7  本章小結(jié) 239
第9 章  Web應(yīng)用程序 241
9.1  使用aiohttp創(chuàng)建REST API 242
9.1.1  什么是REST 242
9.1.2  aiohttp服務(wù)器基礎(chǔ)知識 243
9.1.3  連接到數(shù)據(jù)庫并返回結(jié)果 244
9.1.4  比較aiohttp和Flask 251
9.2  異步服務(wù)器網(wǎng)關(guān)接口 253
9.3  ASGI 與 Starlette 255
9.3.1  使用Starlette的REST端點 255
9.3.2  WebSocket與Starlette 257
9.4  Django異步視圖 261
9.4.1  在異步視圖中運行阻塞工作 267
9.4.2  在同步視圖中使用異步代碼 268
9.5  本章小結(jié) 269
第10 章  微服務(wù) 271
10.1  什么是微服務(wù) 272
10.1.1  代碼的復(fù)雜性 272
10.1.2  可擴展性 272
10.1.3  團隊和堆棧獨立性 273
10.1.4  asyncio如何提供幫助 273
10.2  backend-for-frontend模式 273
10.3  實施產(chǎn)品列表API 275
10.3.1  “用戶收藏”服務(wù) 275
10.3.2  實現(xiàn)基礎(chǔ)服務(wù) 276
10.3.3  實現(xiàn)backend-for-frontend服務(wù) 281
10.3.4  重試失敗的請求 287
10.3.5  斷路器模式 290
10.4  本章小結(jié) 296
第11 章  同步 297
11.1  了解單線程并發(fā)錯誤 298
11.2  鎖 302
11.3  使用信號量限制并發(fā)性 306
11.4  使用事件來通知任務(wù) 312
11.5  條件 317
11.6  本章小結(jié) 322
第12 章  異步隊列 323
12.1  異步隊列基本知識 324
12.1.1  Web應(yīng)用程序中的隊列 331
12.1.2  網(wǎng)絡(luò)爬蟲隊列 334
12.2  優(yōu)先級隊列 337
12.3  LIFO隊列 345
12.4  本章小結(jié) 347
第13章  管理子進程 349
13.1  創(chuàng)建子進程 349
13.1.1  控制標(biāo)準(zhǔn)輸出 352
13.1.2  同時運行子進程 355
13.2  與子進程進行通信 359
13.3  本章小結(jié) 363
第14章  高級asyncio 365
14.1  帶有協(xié)程和函數(shù)的API 366
14.2  上下文變量 368
14.3  強制事件循環(huán)迭代 370
14.4  使用不同的事件循環(huán)實現(xiàn) 371
14.5  創(chuàng)建自定義事件循環(huán) 373
14.5.1  協(xié)程和生成器 373
14.5.2  不建議使用基于生成器的協(xié)程 374
14.5.3  自定義可等待對象 376
14.5.4  使用帶有future的套接字 379
14.5.5  任務(wù)的實現(xiàn) 381
14.5.6  實現(xiàn)事件循環(huán) 383
14.5.7  使用自定義事件循環(huán)實現(xiàn)服務(wù)器 386
14.6  本章小結(jié) 388
 
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) rgspecialties.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號