Skip to Content
在 Python 中使用 Asyncio
book

在 Python 中使用 Asyncio

by Caleb Hattingh
May 2025
Intermediate to advanced
166 pages
2h 4m
Chinese
O'Reilly Media, Inc.
Content preview from 在 Python 中使用 Asyncio

第 1 章 Asyncio 简介

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

我的故事和你的很像,只是更有趣,因为它涉及机器人。

班德,《未来世界》"30% 铁厨师 "一集

关于 Python 3 中的 Asyncio,我收到的最常见问题是:"它是什么,我能用它做什么?你最常听到的答案可能是关于在单个程序中执行多个并发 HTTP 请求。但它的意义远不止于此--远不止于此。Asyncio 需要改变你对程序结构的思考方式。

Asyncio 的核心重点是如何以最佳方式同时执行多个任务--不仅仅是任何任务,特别是涉及等待时间的任务。这种编程风格所需的关键洞察力在于,在等待这项任务完成的同时,可以执行其他任务。

线程机器人餐厅

现在是 2051 年,你发现自己正从事餐饮业。自动化,主要是机器人工人的自动化,为大部分经济提供了动力,但事实证明,人类偶尔还是喜欢外出就餐的。在你的餐厅里,所有员工都是机器人--当然是类人型的,但毫无疑问都是机器人。最成功的机器人制造商是 Threading 公司,该公司的机器人工人被称为 "ThreadBots"。

除了这个小小的机器人细节,您的餐厅看起来和经营起来就像 2020 年的老式餐厅。您的客人将寻求这种复古体验。他们想要从头开始准备的新鲜食物。他们想要坐在桌边。 他们希望等餐,但只等一小会儿。他们希望在用餐结束时付款,有时甚至会为了怀旧而留下小费。

作为机器人餐厅业务的新手,您会像其他所有餐厅老板一样,雇佣一支小型机器人舰队:一个在前台接待食客(GreetBot),一个负责服务和点餐(WaitBot),一个负责烹饪(ChefBot),还有一个负责管理吧台(WineBot)。

饥肠辘辘的食客来到前台,您的前台线程机器人 GreetBot 会接待他们。然后,WaitBot 会把他们的订单写在一张纸条上交给厨房(因为你想保留这种旧时的体验,还记得吗?ChefBot 会查看纸条上的订单,然后开始准备食物。WaitBot 会定期检查食物是否准备就绪,一旦准备就绪,就会立即将菜肴端到客人的餐桌上。当客人准备离开时,他们会回到 GreetBot,GreetBot 会计算账单,收取他们的付款,并亲切地祝愿他们度过一个愉快的夜晚。

你的餐厅大受欢迎,很快就拥有了一大批顾客。你的机器人员工完全按照你的吩咐做事,他们完全能够胜任你分配给他们的任务。一切都进展得非常顺利,你简直高兴坏了。

然而,随着时间的推移,你开始注意到一些问题。哦,其实也不是什么大问题,只是有些地方似乎总是出错。其他每个机器人餐厅的老板似乎都有类似的小毛病。令人担忧的是,你越成功,这些问题似乎就越严重。

虽然很少发生碰撞,但偶尔发生的碰撞还是让人非常不安:有时,当厨房里的一盘菜准备好了,WaitBot 会在 ChefBot 还松开盘子时就把菜抢走。当然,ChefBot 会把盘子清理干净,但你还是会觉得,这些顶级机器人应该知道如何让彼此的动作更同步一些。这种情况在吧台也时有发生:有时,WineBot 会在吧台上下酒单,而 WaitBot 会在 WineBot 松开手之前抢走酒单,导致玻璃碎裂和 Nederburg Cabernet Sauvignon 洒了一地。

此外,有时当 WaitBot 决定清洁它认为是空桌的地方时,GreetBot 会让新的食客入座。 这对食客来说非常尴尬。你曾尝试在 WaitBot 的清洁功能中添加延迟逻辑,或在 GreetBot 的入座功能中添加延迟逻辑,但这些都没有什么用,碰撞还是会发生。但至少这些事件很少发生。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

《Python 编程》,第 4 版

《Python 编程》,第 4 版

Mark Lutz
Python Command Line Tools

Python Command Line Tools

Alfredo Deza, Noah Gift
ppk on JavaScript

ppk on JavaScript

Peter-Paul Koch
《高性能 Python》第二版

《高性能 Python》第二版

Micha Gorelick, Ian Ozsvald

Publisher Resources

ISBN: 9798341658479