专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

用Python中的asyncio轻松进行异步编程构建快速且高

  异步编程在现代软件开发中变得越来越重要,Python的asyncio包提供了一组功能强大的工具,用于构建快速、可扩展且高效的异步应用程序。在本文中,我们将探讨什么是asyncio、它是如何工作的,以及它的一些用例示例。
  什么是异步?
  Asyncio是一个Python包,它提供事件循环、协程和其他用于构建异步应用程序的工具。它在Python3。4中引入,此后成为该语言的标准部分。
  asyncio的核心是提供一个事件循环,这是一种允许多个任务在单个线程中并发运行的编程结构。这是通过使用协程实现的,协程是可以在执行过程中的特定点暂停和恢复的函数。通过在事件循环中使用协程,可以编写看似同步但实际上异步执行的代码。异步如何工作?
  asyncio的核心是事件循环,它负责管理应用程序中的所有异步任务。当事件循环启动时,它首先等待事件发生。这些事件可能包括IO操作(例如从套接字读取或写入文件)、计时器到期或其他异步任务。
  当一个事件发生时,事件循环被唤醒并选择其中一个准备执行的任务。然后事件循环继续执行该任务,直到它完成或需要暂停(例如,等待另一个IO操作完成)。此时,事件循环选择另一个任务来执行并继续该过程。示例用例
  让我们从简单到复杂探索一些示例,了解如何使用asyncio构建异步应用程序。简单用例:并行HTTP请求
  asyncio的一个简单用例是发出并行HTTP请求。这是一个例子:importasyncioimportaiohttpasyncdeffetchurl(session,url):asyncwithsession。get(url)asresponse:returnawaitresponse。text()asyncdefmain():asyncwithaiohttp。ClientSession()assession:urls〔https:www。toutiao。com,https:www。taobao。com,https:www。baidu。com〕tasks〔fetchurl(session,url)forurlinurls〕resultsawaitasyncio。gather(tasks)print(results)asyncio。run(main())
  在这个例子中,我们使用aiohttp库来发出HTTP请求。我们定义了一个协程fetchurl,它接受一个会话和一个URL并返回响应文本。然后我们定义一个main协程,它创建一个会话和要获取的URL列表,为每个URL创建一个任务列表,然后用于asyncio。gather等待所有任务完成。最后,我们打印结果。一般用例:网页抓取
  asyncio的另一个用例是网络抓取。这是一个例子:importasyncioimportaiohttpfrombs4importBeautifulSoupasyncdeffetchurl(session,url):asyncwithsession。get(url)asresponse:returnawaitresponse。text()asyncdefscrapepage(session,url):htmlawaitfetchurl(session,url)soupBeautifulSoup(html,html。parser)links〔link。get(href)forlinkinsoup。findall(a)〕returnlinksasyncdefmain():urls〔https:www。python。org,https:www。baidu。com,https:www。toutiao。com,https:www。example。com,〕asyncwithaiohttp。ClientSession()assession:tasks〔asyncio。createtask(scrapepage(session,url))forurlinurls〕pagesawaitasyncio。gather(tasks)forurl,linksinzip(urls,pages):print(fLinkson{url}:)forlinkinlinks:print(link)asyncio。run(main())
  在这个用例中,我们使用asyncio和aiohttp来抓取网页并从中提取链接。我们定义了一个协程scrapepage,它接受一个会话和一个URL,用fetchurl检索页面HTML,然后使用BeautifulSoup解析HTML并提取所有链接。然后我们定义一个main协程,它创建一个会话和一个要抓取的URL列表,为每个URL创建一个任务列表,并用于asyncio。gather等待所有任务完成。复杂用例:分布式系统
  最后,让我们考虑一个更复杂的asyncio用例:构建分布式系统。在这个场景中,我们要构建一个由多个节点组成的系统,每个节点负责处理数据并与其他节点通信。我们将使用asyncio和asyncio。Queue类来实现这个系统。importasyncioasyncdefworker(workerid,queue):whileTrue:itemawaitqueue。get()print(fWorker{workerid}processingitem{item})awaitasyncio。sleep(1)queue。taskdone()asyncdefmain():numworkers3numitems10queueasyncio。Queue()启动workerworkers〔asyncio。createtask(worker(i,queue))foriinrange(numworkers)〕添加项目到队列中foriinrange(numitems):awaitqueue。put(i)等待队列清空awaitqueue。join()取消workerforworkertaskinworkers:workertask。cancel()asyncio。run(main())
  在这个例子中,我们定义了一个工作协程,它接受一个工作ID和一个队列,并重复等待一个项目被添加到队列中。当一个项目被添加时,worker处理它(在这种情况下,只是打印一条消息并休眠1秒)然后通过调用queue。taskdone()将项目标记为完成。然后我们定义一个主协程,它创建一个队列,启动一些工作任务,向队列添加一些项目,等待队列为空,然后取消工作任务。
  这是一个非常简单的分布式系统示例,但它演示了如何使用asyncio和asyncio。Queue类来实现基本的消息传递系统。为什么异步很重要?
  异步编程在现代软件开发中变得越来越重要,尤其是在Web应用程序中。通过使用asyncio,开发人员可以构建快速、可扩展且高效的异步应用程序,这些应用程序可以处理大量并发。
  此外,asyncio使编写兼具高性能和可读性的代码变得更加容易。通过使用协程和事件循环,开发人员可以编写看似同步且易于理解的代码,即使它实际上是异步执行的。
  总体而言,asyncio是任何想要构建快速、可扩展且高效的异步应用程序的Python开发人员的重要工具。无论您是构建简单的并行HTTP请求客户端还是复杂的分布式系统,asyncio都能胜任。

小米10月1日起将停止部分老旧机型维修技术支持来自小米方面消息,最近小米官方发布了关于对部分产品维修服务相关支持的公告,表示将不再生产一部分老旧机型的零配件,维修物料,原因是这类产品已经超过了法定的供应年限。小米10月1日起将雷德蒙卡佛好事一小件人在遭逢巨变,悲恸绝望之际,总是如草木祈盼雨水阳光般希求慰藉。然而,当此际,愿意伸出援手的人并不多见,而其中能够有所助益不致造成二次伤害的就更是凤毛麟角。好事一小件文雷德蒙卡佛周六金星上也有云层?而且一片云竟能存在三十年之久!这是为何?金星的超能力维持一片云的存在超过三十年2016年9月5日,日本宇宙航空研究开发机构航天器赤月号(Akatsuki)上的红外摄像机拍摄到的金星图像。(图片来源日本宇宙航空研究开发机构随着鲸鱼的聚集,狗狗币在过去5天内飙升7由于鲸鱼已经显示出积累行为的迹象,狗狗币在过去五天里飙升了7。拥有1亿到10亿个DOGE的狗狗币地址最近增长了5最近几周,狗狗币和一般加密货币市场都在苦苦挣扎,但由于memecoiHLKAL00是华为什么型号?HLKAL00是华为旗下的中低端机荣耀9X。需要说明的一点荣耀已经从华为独立出来,这款手机是没有脱离华为之前发布的手机型号!这款手机采用6。59英寸的曲面屏外观。屏幕分辨率为234又赢了!昨晚湖北姑娘郑钦文闯进四强23日晚据人民日报客户端消息当天在WTA500东京站女单14决赛中中国选手郑钦文经过两盘激战以64,75击败美国选手刘婧文继今年墨尔本站后职业生涯第二次跻身巡回赛四强这也是她迄今闯决战金微山9夜,分外的冷,冻醒了王陵。寒冷也冻住他的伤口,起到止血作用。他周身上下,除左肩部有一处贯穿伤,其余都是皮肉伤。最终救了王陵的,还是李兰纵身一跃伏在他身上,阻止了敌人对他进一步的致命一加骁龙8Gen2旗舰方形表盘智能手表新品再曝今年1月,一加在新品发布活动中,推出了一加10Pro旗舰。作为旗舰系列的产品迭代,其发布时间较之以往更早了一些。现在,随着骁龙8Gen2的发布时间提前,全新一代的一加旗舰也有望再次詹皇得3万分用了1107场,剩余6位3万分先生用多少场?乔丹太无解在NBA历史至今出现过很多超级得分手,但是并不是所有的超级得分手都拥有着健康的身体,比如麦迪,因为伤病让他的巅峰非常短暂,而能够成为历史级得分手的球员大都是职业生涯比较漫长,而且也新商业渡劫,能更好满足消费者需求的企业会活得更好9月78日,2022DEMOCHINA创新中国峰会在江苏省无锡市举行。本次峰会以转折点为主题,邀请政府领导产业专家知名投资人以演讲专场对话等形式带来最新的行业洞察,来自全国的优秀创消息称小红书CFO杨若离职,加盟复星集团Tech星球9月23日消息,据36氪未来消费报道,小红书原CFO杨若近日已正式离职,加盟复星集团。对于上述信息,小红书表示,杨若先生因为家庭原因,已于近日辞去公司首席财务官职务。感
家里太潮湿怎么办?白朗除湿机来抽干多余水分我家这边天气经常连绵阴雨,空气里都会变得湿哒哒黏糊糊的,衣服晾在室外也干不了,晾在室内不仅不干还有一股发酵的味道。而且屋里哪里都感觉湿漉漉的,就连睡觉的被子都很潮湿。做了一番功课之饺子馅能不能放蚝油?牢记2放4不放,饺子鲜嫩多汁,味道喷香饺子馅能不能放蚝油?牢记2放4不放,饺子鲜嫩多汁,味道喷香俗话说众口难调,但有一种食物,不分性别,无论年龄,大家都爱吃,它就是饺子。逢年过节,家家户户都会包饺子吃,寓意团圆吉祥。饺2023款新顶配宝马3系M340iBMWM340ixDrive轿车采用黑色蓝宝石和黑色搭配灰色对比色缝线Vernasca皮革制成。配备以下规格带红色卡钳的M运动制动器带RFT的19792M双辐双色喷黑色合金轮毂防晒前列腺增生的中成药治疗前列腺增生在中医属于癃闭范围,主要表现是尿频尿急,夜尿增多,还有一个就是急迫性的尿失禁。尿频是前列腺增生的早期信号,特别是夜间尿频,如果起夜一到两次的话,这基本上可以说是正常的。如弱视到底是怎么回事?听听眼科医生怎么说弱视是很常见的儿童眼病,通常是由于在幼儿发育的时期,没有接收到适宜的视力刺激,从而导致视觉发育受到影响引发视觉功能减退的状态。很多孩子是在做眼科检查时发现的,所以加强筛查是最有效的面对日本三队,国足选拔队会被压着打,成为12强赛的翻版吗?国足选拔队对阵韩国队,成了被压着打的一方。这应该是国足在国际A级赛事中,有史以来面对韩国队踢得最窝囊的一场比赛,0比3的比分不算悬殊,但是被打得毫无还手之力。韩国队参加东亚杯的阵容这真的是林志玲吗?我怎么看着越来越像日本贵妇了?哈哈哈到底是什么快速醒酒的办法?你倒是说出来呀。这桥做的也真的有点另类,要不然叫下腰?蔡徐坤这是穿越到了三国时代吗?月底可以发工资的单位,都是好单位。你也得问问柱子愿不愿意和你一起穿情侣比特币2023年预测与展望?比特币这轮下跌已经快要接近底部了,你觉得呢?美联储加息这颗最大的利空因素,正在慢慢出尽中,加息周期完毕接着又是下一个加息缩表,迎来新一轮的美元超发大水漫灌周期。这轮熊市下跌距离去年照着这六张图去做,做到这六件事,助你拥有好人缘在社会上混,我们都离不开跟人打交道。所谓,多个朋友多条路,多个冤家多堵墙。在跟人交往的过程中,如果能积极示好,结交善缘,以后就多一些助益。而如果四处树敌,只会让自己的路越走越窄。所恭喜!大连人有望迎来首位归化球员,年仅20岁可解决球队后防难题盛夏8月即将到来,中超的夏季转会窗即将开启。很多球队都会利用本赛季这最后一个窗口期来调整一线队的球员阵容,这其中就包括了中超豪门山东泰山队。近日,据某山东足球圈内人士透露,泰山俱乐重磅好消息!CBA新赛季开赛时间确定,或恢复主客场,增加4轮比赛目前中国男篮结束了征战亚洲杯的比赛,取得了非常糟糕的战绩,也让球迷们非常的不满。不过CBA方面却传来了好消息,那就是新赛季的开赛时间也已经正式的确定下来了,接下来让我们一同来关注这
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网