资深软件开发工程师,业余马拉松选手。
是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。
的编程模型就是一个消息循环。模块内部实现了,把需要执行的协程扔到中执行,就实现了异步IO。
用提供的可以把一个标记为类型,然后在内部用调用另一个实现异步操作。
为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法和,可以让的代码更简洁易读。
用实现代码如下:
把一个函数变成类型,然后,我们就把这个函数扔到中执行。执行结果如下:
会首先打印出,然后,语法可以让我们方便地调用另一个函数。由于也是一个函数,所以线程不会等待,而是直接中断并执行下一个消息循环。当返回时,就接着执行下一行语句。
把看成是一个耗时1秒的IO操作,在此期间,主线程并未等待,而是去执行中其他可以执行的函数了,因此可以实现并发执行。
上述还没有看出并发执行的特点,我们改写一下,让两个同时并发执行:
用同时调度多个函数:
执行结果如下:
从结果可知,用执行函数,所有函数均由同一个线程执行。两个是并发执行的,并且可以拿到函数执行的结果(即的返回值)。
如果把换成真正的IO操作,则多个并发的IO操作实际上可以由一个线程并发执行。
我们用的异步网络连接来获取sina、sohu和163的网站首页:
执行结果如下:
可见3个连接由一个线程并发执行3个函数完成。
提供了完善的异步IO支持,用调度一个;
在一个函数内部,通过可以调用另一个函数,这个调用看起来是串行执行的,但实际上是由内部的消息循环控制;
在一个函数内部,通过可以并发执行若干个函数。
hello.py
gather.py
wget.py
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/717.html