当前位置: 首页 > news >正文

网站开发者工具下载目前最牛的二级分销模式

网站开发者工具下载,目前最牛的二级分销模式,网站改版url,那个网站做粮油批发APP​python 一直在进行并发编程的优化, 比较熟知的是使用 thread 模块多线程和 multiprocessing 多进程,后来慢慢引入基于 yield 关键字的协程。而近几个版本,python 对于协程的写法进行了大幅的优化,很多之前的协程写法不被官方推荐…

​python 一直在进行并发编程的优化, 比较熟知的是使用 thread 模块多线程和 multiprocessing 多进程,后来慢慢引入基于 yield 关键字的协程。而近几个版本,python 对于协程的写法进行了大幅的优化,很多之前的协程写法不被官方推荐了。

协程发展历程

Python中的协程大概经历了如下三个阶段:最初的生成器变形yield/send

yield from

在Python3.5版本中引入async/await关键字

本文就直接从Python3.5版本开始讲起,如果大家有兴趣可以讲讲在没有出现async/await关键字之前,Python是如何完成协程的

同步和异步

同步是指代码调用IO操作时,必须等待IO操作完成才返回的调用方式,多个任务之间执行的时候要求有先后顺序,必须一个先执行完成之后,另一个才能继续执行, 只有一个主线

异步是指代码调用IO操作时,不必等IO操作完成就返回的调用方式,多个任务之间执行没有先后顺序,可以同时运行,执行的先后顺序不会有什么影响,存在的多条运行主线

并行和并发

我拿单核CPU来说,单核意味着同一时刻只做一件事情,那么电脑上同时运行的软件是如何做到的呢?

QQ到CPU中执行很短的时间,然后微信在到CPU中执行很短的时间,最终大家看起来就像是一起来运行,CPU的这种轮转策略就叫做时间片轮转

并行:cpu大于当前执行的任务

并发:cpu小于当前执行的任务

协程,线程和进程的对比

1. 假如有一条生产线,在这条生产线上多招些工人,一起来做剪子,这样效率是成倍増长,即单进程多线程方式

2. 老板发现这条生产线上的工人不是越多越好,因为一条生产线的资源以及材料毕竟有限,所以老板又花了些财力物力购置了另外一条生产线,然后再招些工人这样效率又再一步提高了,即多进程多线程方式

3.老板发现,现在已经有了很多条生产线,并且每条生产线上已经有很多工人了(即程序是多进程的,每个进程中又有多个线程),为了再次提高效率,老板想了个损招,规定:如果某个员工在上班时临时没事或者再等待某些条件(比如等待另一个工人生产完谋道工序 之后他才能再次工作) ,那么这个员工就利用这个时间去做其它的事情,那么也就是说:如果一个线程等待某些条件,可以充分利用这个时间去做其它事情,其实这就是:协程方式

协程的基础使用

这是 python 3.7 里面的基础协程用法,现在这种用法已经基本稳定,不太建议使用之前的语法了。

import asyncio

import time

async def visit_url(url, response_time):

"""访问 url"""

await asyncio.sleep(response_time)

return f"访问{url}, 已得到返回结果"

start_time = time.perf_counter()

task = visit_url('http://wangzhen.com', 2)

asyncio.run(task)

print(f"消耗时间:{time.perf_counter() - start_time}")在普通的函数前面加 async 关键字;

await 表示在这个地方等待子函数执行完成,再往下执行。(在并发操作中,把程序控制权教给主程序,让他分配其他协程执行。) await 只能在带有 async 关键字的函数中运行。

asynico.run() 运行程序

这个程序消耗时间 2s 左右。

增加协程

再添加一个任务

task2 = visit_url('http://another.com', 3)

asynicio.run(task2)

这 2 个程序一共消耗 5s 左右的时间。并没有发挥并发编程的优势

import asyncio

import time

async def visit_url(url, response_time):

"""访问 url"""

await asyncio.sleep(response_time)

return f"访问{url}, 已得到返回结果"

async def run_task():

"""收集子任务"""

task = visit_url('http://wangzhen.com', 2)

task_2 = visit_url('http://another', 3)

await asyncio.run(task)

await asyncio.run(task_2)

asyncio.run(run_task())

print(f"消耗时间:{time.perf_counter() - start_time}")

如果是并发编程,这个程序只需要消耗 3s,也就是task2的等待时间。要想使用并发编程形式,需要把上面的代码改一下。asyncio.gather 会创建 2 个子任务,当出现 await 的时候,程序会在这 2 个子任务之间进行调度。

async def run_task():

"""收集子任务"""

task = visit_url('http://wangzhen.com', 2)

task_2 = visit_url('http://another', 3)

await asynicio.gather(task1, task2)

create_task

创建子任务除了可以用 gather 方法之外,还可以使用 asyncio.create_task 进行创建。

async def run_task():

coro = visit_url('http://wangzhen.com', 2)

coro_2 = visit_url('http://another.com', 3)

task1 = asyncio.create_task(coro)

task2 = asyncio.create_task(coro_2)

await task1

await task2

协程的主要使用场景

协程的主要应用场景是 IO 密集型任务,总结几个常见的使用场景:网络请求,比如爬虫,大量使用 aiohttp

文件读取, aiofile

web 框架, aiohttp, fastapi

数据库查询, asyncpg, databases文章持续更新,可以微信搜一搜「极客夜读」第一时间阅读,有我准备的一线大厂面试资料和简历模板。

最后送给大家一句话,你知道的越多,你不知道的越多~

http://www.lbrq.cn/news/2730835.html

相关文章:

  • 对网站建设的认识上海小红书seo
  • 网站如何做网站解析百度seo排名点击器
  • 赶集网网站建设今日最新国内新闻重大事件
  • 室内设计效果图排版seo有哪些优缺点?
  • 时事新闻最新湖南靠谱的关键词优化哪家好
  • 学做网站的学校惠州seo排名收费
  • 施工企业资质证书封皮seo优化服务价格
  • 哪些公司做DZ网站维护网络营销相关工作岗位
  • 做网站的封面图片哪里才有今日头条普通版
  • 广州大型网站建设公司排名seo销售代表招聘
  • 丝网外贸做哪些网站抖音推广
  • 鹤壁河南网站建设郑州网络推广
  • 兰州的网站建设网站提交入口大全
  • 在百度云上做网站线上营销的优势和劣势
  • 原画师苏州网站关键字优化
  • 厦门网站制作微信软文范例
  • 白云做网站的公西安市网站
  • 做影视网站风险大吗东莞关键词seo
  • 网站建设 后台郑州厉害的seo顾问
  • 做网站的属于什么专业叶涛网站推广优化
  • 柳州做网站优化泉州seo报价
  • 地方政府如何建设政府网站各大网站收录查询
  • 网站除了做流量还需要什么软件吗西安百度竞价代运营
  • 昆明网站建设.com网上销售
  • 做网站哪里接单全自动引流推广软件app
  • 建设网站是什么样的百度免费推广
  • 四川省人民政府网站集约化建设成品短视频app源码的优点
  • 做汽配批发做那个网站比较好手机制作网页
  • 1元云购网站建设网站seo优化报告
  • 用nas做网站安徽网站推广公司
  • 玄机靶场 | 日志分析-Tomcat日志分析
  • 数据处理与统计分析 —— numpy入门
  • w484扶贫助农系统设计与实现
  • 一个集成多源威胁情报的聚合平台,提供实时威胁情报查询和播报服务、主动拦截威胁IP,集成AI等多项常用安全类工具
  • 人工智能与社会治理:从工具到生态的范式重构
  • 加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?