用协程实现高并发I/O(async)
2024-10-11 18:39:17
对于并发要求比较法的I/O需求,可以用python的协程去处理。
重点:
1启动协程必须做一次函数调用
2协程激活只占用1kb内存,所以协程很多也问题不大
3这种效果需要使用关键字async和await
4协程和进程的区别在于:他不会从头到尾执行完,而是在遇到await表达式就暂停一次,下次继续执行的时候,他会等async操作有了结果,在推进下去
5python可以使用多async,让看起来像多线程并发(python由于GIL的原因其实不太支持做真正的并发)
import asyncio
async def print_num(num):
print("Maoli is printing " + str(num) + " nows" )
await asyncio.sleep(1)
print("Maoli prints" + str(num) + " OK")
async def main(nums):
for num in nums:
await print_num(num)
asyncio.run(main([i for i in range(1,6)]))
Maoli is printing 1 nows
Maoli prints1 OK
Maoli is printing 2 nows
Maoli prints2 OK
Maoli is printing 3 nows
Maoli prints3 OK
Maoli is printing 4 nows
Maoli prints4 OK
Maoli is printing 5 nows
Maoli prints5 OK
最新文章
- Linux安装Node.js
- Objective-C中的集合类
- BZOJ3331: [BeiJing2013]压力
- Angular-表单动态添加删除
- hadoop 多表join:Map side join及Reduce side join范例
- setContentView R can not be resovled
- exception 'DOMException' with message 'Invalid Character Error' Php + Mongodb
- spoj705 后缀数组求不同子串的个数
- R笔记1
- TFS 2013”无法移除仍为团队管理员身份的标识”
- Spring源码下载地址
- SQL 表值函数
- PHP 测试程序运行时间 microtime函数用法
- SQL Server 2008 数据库日志文件丢失处理方法
- -_-#【H5】meta / href
- 彩色图像--色彩空间 YIQ 、YUV 、YCbCr 、YC1C2 和I1I2I3
- 组合数处理(逆元求解)...Orz
- MySQL锁详解
- nginx允许IP访问不生效问题【原创】
- ldconfig 的简单用法