前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现高并发协程处理

Python实现高并发协程处理

作者头像
十里桃花舞丶
发布2023-10-16 14:09:03
2290
发布2023-10-16 14:09:03
举报
文章被收录于专栏:桥路_大数据桥路_大数据

什么是协程?

进程:程序在启动后,会在操作系统中作为一个进程存在。不同的进程之间互不影响,各自运行任务。

线程:每个进程为了保证多任务运行,会拆分为多个线程,线程共享进程的运行空间;但线程之间要进行切换时,开销比较高,需要保存线程的运行信息以便下次恢复,此时不可避免会影响效率。

协程:协程是线程的进一步划分,一个线程中运行多个协程;在线程不进行切换的前提下,使用协程就可以完成并发运算的操作。相对于线程切换实现的并发,协程更加轻量,且效率更高。

Python协程

python中,协程依靠async 和 await 两个关键字实现。

async 关键词放置在普通函数前,将函数设置为异步执行,交给 asyncio 去调度。

asyncio 在异步调度时,如果发现wait关键词,异步函数就不需要阻塞在这里,可以调度到其它Task中执行。

例如,在python中实现url并发下载:

代码语言:javascript
复制
async def download_url(url, session=None) :
    fail = True
    file_name = basename(uri)
    assert session
    try:
        async with session.get(uri) as response:
            if response.status == 404:
                print('404 - Not found'))
                return fail, url
            if not response.status == 200:
				print('Failed')
                return fail, url
            data = await response.read()

此时,可以同时启动 get(url),在 await 的时候,切换 task。

协程使用起来会更加高效,除了Python,在其它编程语言中也有体现,可以提高程序性能。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是协程?
  • Python协程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档