一、使用异步的注意事项
- 异步代码中不能有耗时的 I/O操作,像文件读写、网络请求、数据库读写等操作都需要使用对应的异步库来代替。
- 异步代码要尽可能短小,短小的意思就是功能要尽可能细分,前面讲过异步在任务量较少的时候性能并不能达到最优,我们可以通过合理地拆分代码来增加任务量,从而达到提高性能的目的。
二、使用异步需要了解的两个重要的类
-
AbstractEventLoop
,我们可以把它简称为 EventLoop类或者事件循环。事件循环是整个异步的基础,所有的异步操作都在事件循环里完成。这里我们需要了解并学会使用它的如下几个方法:
run_until_complete(Future)
该方法接受一个或多个 Future对象作为参数,然后运行这些对象直到全部完成并返回它们的结果run_forever()
让事件循环一直运行下去,直到stop()
方法被调用,当stop()
方法被调用时,会继续执行完正在执行的任务,但是这些任务的回调和未被执行的任务将不再执行。create_task()
、create_future()
光看名字可能大家会误以为这两个方法的功能是创建一个 Task类或者 Future类并将其返回,事实上这两个方法的功能确实包括这个,但是除此之外它们还会将创建的对象添加到事件循环中去。
-
Future
,Future对象类似于 JavaScript里的 Promise对象,简单来说就是该对象承诺未来的某个时候会返回一个结果,但是具体的时间是不确定的。所以我