电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python中Task封裝協(xié)程的知識(shí)點(diǎn)總結(jié)

瀏覽:27日期:2022-06-14 17:52:10
說明

1、Task是Future的子類,Task是對(duì)協(xié)程的封裝,我們把多個(gè)Task放在循環(huán)調(diào)度列表中,等待調(diào)度執(zhí)行。

2、Task對(duì)象可以跟蹤任務(wù)和狀態(tài)。Future(Task是Futrue的子類)為我們提供了異步編程中最終結(jié)果的處理(Task類還具有狀態(tài)處理功能)。

3、把協(xié)程封裝成Task,加入一個(gè)隊(duì)列等待調(diào)用。剛創(chuàng)建Task的時(shí)候不執(zhí)行,遇到await就執(zhí)行。

實(shí)例

import asyncio async def func():print(1)await asyncio.sleep(2)print(2)return '返回值' async def main():print('main開始') # 創(chuàng)建協(xié)程,將協(xié)程封裝到Task對(duì)象中并添加到事件循環(huán)的任務(wù)列表中,等待事件循環(huán)去執(zhí)行(默認(rèn)是就緒狀態(tài))。# 在調(diào)用task_list = [asyncio.create_task(func(), name='n1'),asyncio.create_task(func(), name='n2')] print('main結(jié)束') # 當(dāng)執(zhí)行某協(xié)程遇到IO操作時(shí),會(huì)自動(dòng)化切換執(zhí)行其他任務(wù)。# 此處的await是等待所有協(xié)程執(zhí)行完畢,并將所有協(xié)程的返回值保存到done# 如果設(shè)置了timeout值,則意味著此處最多等待的秒,完成的協(xié)程返回值寫入到done中,未完成則寫到pending中。done, pending = await asyncio.wait(task_list, timeout=None)print(done, pending) asyncio.run(main())

知識(shí)點(diǎn)擴(kuò)展:

Task 概念及用法

Task,是 python 中與事件循環(huán)進(jìn)行交互的一種主要方式。

創(chuàng)建 Task,意思就是把協(xié)程封裝成 Task 實(shí)例,并追蹤協(xié)程的 運(yùn)行 / 完成狀態(tài),用于未來獲取協(xié)程的結(jié)果。

Task 核心作用:在事件循環(huán)中添加多個(gè)并發(fā)任務(wù);

具體來說,是通過 asyncio.create_task() 創(chuàng)建 Task,讓協(xié)程對(duì)象加入時(shí)事件循環(huán)中,等待被調(diào)度執(zhí)行。

注意:Python 3.7 以后的版本支持 asyncio.create_task(),在此之前的寫法為 loop.create_task(),開發(fā)過程中需要注意代碼寫法對(duì)不同版本 python 的兼容性。

需要指出的是,協(xié)程封裝為 Task 后不會(huì)立馬啟動(dòng),當(dāng)某個(gè)代碼 await 這個(gè) Task 的時(shí)候才會(huì)被執(zhí)行。

當(dāng)多個(gè) Task 被加入一個(gè) task_list 的時(shí)候,添加 Task 的過程中 Task 不會(huì)執(zhí)行,必須要用 await asyncio.wait() 或 await asyncio.gather() 將 Task 對(duì)象加入事件循環(huán)中異步執(zhí)行。

一般在開發(fā)中,常用的寫法是這樣的:

-- 先創(chuàng)建 task_list 空列表;-- 然后用 asyncio.create_task() 創(chuàng)建 Task;-- 再把 Task 對(duì)象加入 task_list;-- 最后使用 await asyncio.wait 或 await asyncio.gather 將 Task 對(duì)象加入事件循環(huán)中異步執(zhí)行。

注意:創(chuàng)建 Task 對(duì)象時(shí),除了可以使用 asyncio.create_task() 之外,還可以用最低層級(jí)的 loop.create_task() 或 asyncio.ensure_future(),他們都可以用來創(chuàng)建 Task 對(duì)象,其中關(guān)于 ensure_future 相關(guān)內(nèi)容本文接下來會(huì)一起講。

Task 用法代碼示例:

import asyncioimport arrowdef current_time(): ’’’ 獲取當(dāng)前時(shí)間 :return: ’’’ cur_time = arrow.now().to(’Asia/Shanghai’).format(’YYYY-MM-DD HH:mm:ss’) return cur_timeasync def func(sleep_time): func_name_suffix = sleep_time# 使用 sleep_time(函數(shù) I/O 等待時(shí)長(zhǎng))作為函數(shù)名后綴,以區(qū)分任務(wù)對(duì)象 print(f'[{current_time()}] 執(zhí)行異步函數(shù) {func.__name__}-{func_name_suffix}') await asyncio.sleep(sleep_time) print(f'[{current_time()}] 函數(shù) {func.__name__}-{func_name_suffix} 執(zhí)行完畢') return f'【[{current_time()}] 得到函數(shù) {func.__name__}-{func_name_suffix} 執(zhí)行結(jié)果】'async def run(): task_list = [] for i in range(5):task = asyncio.create_task(async_func(i))task_list.append(task) done, pending = await asyncio.wait(task_list, timeout=None) for done_task in done:print((f'[{current_time()}] 得到執(zhí)行結(jié)果 {done_task.result()}'))def main(): loop = asyncio.get_event_loop() loop.run_until_complete(run())if __name__ == ’__main__’: main()

到此這篇關(guān)于python中Task封裝協(xié)程的知識(shí)點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)python中Task封裝協(xié)程內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: python Task Future
相關(guān)文章:
主站蜘蛛池模板: 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | POS机办理_个人pos机免费领取-银联pos机申请首页 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 探伤仪,漆膜厚度测试仪,轮胎花纹深度尺厂家-淄博创宇电子 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 高中学习网-高考生信息学习必备平台| 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 消防设施操作员考试报名时间,报名入口,报考条件 | 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 祝融环境-地源热泵多恒系统高新技术企业,舒适生活环境缔造者! | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 |