协程模块asyncio
简单写了下读了协程后的总结,下述内容对于基本使用是足够的。
其他的线程池、进程、队列等其他扩展,以后再补充。
理论
1、事件循环里,协程方法(task、future)都是future对象。
2、将所有future注册进IO事件循环里,阻塞监听,触发future的回调。
asyncio主要对象
基础
Run an event loop
1、 run_until_complete(future)
运行future对象,直到完成,事件循环结束
2、run_forever()
除非调用stop,否则将一直运行
两者的区别就是第一个执行完就停止事件循环,第二个是必须调用stop才会停止事件循环
Call
1、call_son()
回调一个函数,这个函数不用声明为协程对象
Futures
1、create_future()
创建一个future对象
Tasks
1、create_task(coro)
使用future对象包装
task和future的最大区别:
future是在一个task里的回调或者是下一步操作,future的概念是在task里面;
task是任务,多个任务同时在一个事件循环里执行;
Creating connections
1、create_connection
创建socket连接,client;
Creating listening connections
1、create_server
创建绑定到主机和端口的TCP服务器(套接字类型SOCK_STREAM);
Watch file descriptors
1、add_reader(fd,callback,*args)
观察文件描述符读取可用性,然后调用指定参数的回调;
2、remove_reader(fd)
停止观看文件描述器读取可用性。
gather
自给定的协程对象或futures返回一个future汇总结果。
所有futures必须共享相同的事件循环。
实例
协程跑一个任务,运行完停止
1 | import asyncio |
协程跑多个任务,运行完不停止
1 | import asyncio |
协程跑多个任务,运行完停止
1 | import asyncio |