在学习asyncio/await之前,我们先来理清楚同步/异步的概念:
-
同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行。。。
-
异步是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果。
举个例子,
假如我要到一家超市去购买土豆,而超市货架上的商品数量是有限的。现在我想要买多件商品时,每次从货架上拿走一件商品放到购物车上。当货架上的商品不够的时候,不能硬等这个商品。
正常的情况是,当货架上的指定商品没有了之后,我可以询问超市请求需要更多的商品,或者暂时放弃该商品,去看看其他的商品,结账回家
具体的代码实现,
# -*- coding:utf-8 -*-
import random
import asyncio
class Goods:
"""
商品
"""
def __str__(self) -> str:
return "goods"
def __repr__(self) -> str:
return self.__str__()
@classmethod
def make(cls, num, *args, **kws):
"""
准备商品
"""
goods = [cls.__new__(cls, *args, **kws) f