Python3之百万并发实现方法

本文介绍了Python3中利用asyncio和aiohttp实现百万并发的方法。对比了同步与异步的概念,强调异步在IO密集型任务中的优势。通过示例展示了如何使用aiohttp进行多链接异步访问,并解释了如何处理并发限制问题,提供了限制并发数的解决方案。
摘要由CSDN通过智能技术生成

python由于GIL(全局锁)的存在,不能发挥多核的优势,在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率,弥补了python性能方面的短板。

python3.4版本引入asyncio到标准库,python2x没有加这个库,python3.5又加入了async/await特性。

同步/异步的概念

同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行。

异步是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果。

asyncio

对比同步代码和异步代码编写方面的差异,其次看下两者性能上的差距,使用sleep(1)模拟耗时1秒的io操作。

同步代码

import time
​
def hello():
    time.sleep(1)
​
def run():
    for i in range(5):
        hello()
        print(time.time())
​
if __name__ == '__main__':
    run()
​
# 结果
# 间隔约是1s
​
# 1549956123.908849
# 1549956124.9128718
# 1549956125.9164648
# 1549956126.91946
# 1549956127.922292

异步代码

import asyncio
import time
​
​
# 定义异步函数
async def hello():
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值