Python 非同步設計|使用 Asyncio (Using Asyncio in Python )
Caleb Hattingh 著 林信良 譯
- 出版商: 歐萊禮
- 出版日期: 2020-08-19
- 定價: $480
- 售價: 7.9 折 $379
- 語言: 繁體中文
- 頁數: 168
- 裝訂: 平裝
- ISBN: 9865025914
- ISBN-13: 9789865025915
-
相關分類:
Python
- 此書翻譯自: Using Asyncio in Python: Understanding Python's Asynchronous Programming Features (Paperback)
已絕版
買這商品的人也買了...
-
流暢的 Python|清晰、簡潔、有效的程式設計 (Fluent Python)$980$774 -
Python 技術者們 - 練功!老手帶路教你精通正宗 Python 程式 (The Quick Python Book, 3/e)$780$663 -
Docker 專業養成 ─ 活用基礎與實踐技能 (暢銷回饋版)$450$351 -
Python 神乎其技 全新超譯版 - 快速精通 Python 進階功能, 寫出 Pythonic 的程式 (Python Tricks: A Buffet of Awesome Python Features)$580$493 -
精通 Python|運用簡單的套件進行現代運算, 2/e (Introducing Python: Modern Computing in Simple Packages, 2/e)$880$695 -
Statistics Hacks 統計學駭客 75招 (Statistics Hacks)$580$458 -
Python × Network 一拍即合:自動化、程式化和 DevOps 的一站式解決方案 (Mastering Python Networking, 3/e)$780$608 -
架構模式|使用 Python (Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices)$680$537 -
Python 自動化的樂趣|搞定重複瑣碎&單調無聊的工作, 2/e (Automate the Boring Stuff with Python : Practical Programming for Total Beginners, 2/e)$680$537 -
GAN 對抗式生成網路 (GANs in Action: Deep learning with Generative Adversarial Networks)$750$593 -
社群網站的資料探勘, 3/e (Mining the Social Web: Data Mining Facebook, Twitter, LinkedIn, Google+, GitHub, and More, 3/e)$780$616 -
網站可靠性工程工作手冊|導入SRE的實用方法 (The Site Reliability Workbook)$780$616 -
圖解 AI|機器學習和深度學習的技術與原理$450$356 -
Python for DevOps|學習精準有效的自動化 (Python for Devops: Learn Ruthlessly Effective Automation)$780$616 -
Effective Python 中文版|寫出良好 Python 程式的 90個具體做法, 2/e (Effective Python: 90 Specific Ways to Write Better Python, 2/e)$580$493 -
Python 3.9 技術手冊$560$442 -
高效能 Python 程式設計, 2/e (High Performance Python: Practical Performant Programming for Humans, 2/e)$780$616 -
$403Python 並行編程實戰, 2/e (Python Parallel Programming Cookbook, 2/e) -
軟體架構原理|工程方法 (Fundamentals of Software Architecture: A Comprehensive Guide to Patterns, Characteristics, and Best Practices)$680$537 -
Deep Learning 3|用 Python 進行深度學習框架的開發實作$780$616 -
Python 刷題鍛鍊班:老手都刷過的 50 道程式題, 求職面試最給力 (Python Workout: 50 ten-minute exercises)$480$379 -
Go 學習手冊 (Learning Go)$580$458 -
強健的 Python|撰寫潔淨且可維護的程式碼 (Robust Python: Write Clean and Maintainable Code)$680$537 -
Rust 程式設計, 2/e (Programming Rust: Fast, Safe Systems Development, 2/e)$1,200$948 -
Kubernetes 建置與執行 : 邁向基礎設施的未來, 3/e (Kubernetes: Up and Running: Dive Into the Future of Infrastructure, 3/e)$580$458
商品描述
理解Python非同步設計特性
「非同步是程式寫作者手中極具威力的工具之一,然而新手難以掌握。這本小書揭開了Python非同步程式設計的神秘色彩,教你撰寫出能多工的程式碼。」
-Charles Giver
資料科學家,摩根大通
如果你是被asyncio的複雜給耽誤了的Python開發者之一,是時候另眼相看了。Asyncio複雜的原因在於,它試圖同時解決框架設計者與直接使用的開發者,在並行網路程式設計方面的問題。直接使用的開發者只需要在乎asyncio API中一小部份的特性,只不過正確地找出這些特性需要些技巧,而這正是這本實用書的著力之處。
Python開發老手Caleb Hattingh將帶你認識asyncio的基礎-足以開始寫個基於事件的簡單程式。從中你可以瞭解到,相較於先佔式多工(執行緒),asyncio為何是更安全的選擇,以及面對同時間數以萬計的socket連線時,API如何簡單地提供支援。
‧asyncio與執行緒在並行網路設計方面的重要比較
‧整體瞭解一下asyncio,有個快速起步會用來探討基於事件的程式設計中,底層的迴圈機制
‧認識asyncio特性中,針對直接使用開發者與框架設計者的不同特性
‧理解asyncio新的async/await語法,以及協程、Task、Future API
‧對於一些asyncio相容的第三方程式庫,提供詳細的案例研究(附程式碼)
<序>
Python 3.4導入了asyncio程式庫,而Python 3.5提供async與await關鍵字,讓這個程式庫用來更為愉悅,這些新特性可以進行所謂的非同步程式設計。
我會用Asyncio來代表這些新特性,Python社群對這些新特性一直抱著謹慎的態度;社群中有些人認為它們複雜而難以理解,不單是初學者有這樣的觀點:Python社群的貢獻者中有些人也立場明確地表示,他們對Python中Asyncio API的複雜性有疑慮,而社群中的教育工作者也擔心,不知道該怎麼樣才能教好Asyncio。
對於Python有個幾年經驗的人們,之前都用過執行緒,就算你沒用過,應該也遇過阻斷吧!例如,如果使用過request程式庫撰寫程式的話,一定注意過程式在進行request.get(url)時會暫停一陣子;這就是阻斷行為。
對於只執行一次的作業,這沒什麼問題;然而,若要同時取得一萬個URL的資料,使用request就會有問題。大規模的並行是使用Asyncio的重要原因之一,不過Asyncio另一個重大的吸引力是,優於先佔式執行緒的安全性:使用Asyncio,比較能避開競速(race condition)方面的臭蟲。
本書的目的是讓你對這些新特性有個基本認識,知道為何要導入這些特性,以及如何在自身專案中使用這些特性。
作者簡介
Caleb Hattingh 有20年以上的程式設計經驗,擅長Python,對寫程式充滿熱情,他寫過的軟體包括了化學工程、客戶關係管理(CRM)軟體、飯店產業、GPS追蹤、自然語言處理等各式專案。他擁有化學工程碩士學位。
目錄大綱
第一章 簡介Asyncio
ThreadBots餐廳
閉幕語
Asyncio想解決的問題?
第二章 Thread的真相
執行緒的優點
執行緒的缺點
案例研究:機器人與餐具
第三章 盤點Asyncio
快速起步
Asyncio之塔
協程
事件迴圈
Task與Future
非同步情境管理器:async with
非同步迭代器:async for
更簡單的非同步產生器函式
非同步包含式
適當地啟動與關機
第四章 20 個沒用過的Asyncio 程式庫(不過⋯哦,別擔心)
Stream(標準程式庫)
Twisted
Janus 佇列
aiohttp
ØMQ(ZeroMQ)
asyncpq 與Sanic
其他程式庫與資源
第五章 想法總結
附錄A Python 非同步支援簡史
附錄B 補充資料









