python3 asyncio-协程模块测试代码
import time import asyncio #统计运行时间的装饰器
def run_time(func):
def wrapperfunc(*argv, **kwargv):
now = lambda : time.time()
start = now()
func(*argv, **kwargv)
end = now()
runTime = end - start
print("")
print("run_time:{}s".format(runTime))
return wrapperfunc #程序运行区域划分
def printf(func):
def wrapperfunc(*argv, **kwargv):
print("start:***********")
func(*argv, **kwargv)
print("end:*************")
return wrapperfunc async def do_some_work(x):
time.sleep(0.5)
print("waiting: ", x)
await asyncio.sleep(x)
print("complete: ", x)
return 'Done after {}s'.format(x) async def hong():
print("waiting: ", 5)
await asyncio.sleep(5)
return "ok" #获得协程处理完毕后的结果
def test(io):
print("")
print("协程回调功能测试")
print(type(io), "-----"+str(io))
print("get:", io.result())
print("") def test1(t, future, *argv):
print("callback", t, future.result()) async def east():
#协程重新命名方便进行列表构建
north1 = do_some_work(1)
north2 = do_some_work(2)
north3 = do_some_work(4)
north4 = hong()
#创建task对象,可以获得协程运行后的结果
task4 = asyncio.ensure_future(north1)
task5 = asyncio.ensure_future(north2)
task6 = asyncio.ensure_future(north3)
task7 = asyncio.ensure_future(north4)
#协程task4处理完成后,调用test函数
task4.add_done_callback(test) tasks = [task4, task5, task6,task7]
return await asyncio.wait(tasks) @printf
@run_time
def main(a):
loop = asyncio.get_event_loop()
tasks, _ = loop.run_until_complete(east())
print("")
print("查看协程处理完毕后,保存的结果")
for task in tasks:
print(task.result()) main("lk")
python3 asyncio-协程模块测试代码的更多相关文章
- python并发编程之asyncio协程(三)
协程实现了在单线程下的并发,每个协程共享线程的几乎所有的资源,除了协程自己私有的上下文栈:协程的切换属于程序级别的切换,对于操作系统来说是无感知的,因此切换速度更快.开销更小.效率更高,在有多IO操作 ...
- 二、深入asyncio协程(任务对象,协程调用原理,协程并发)
由于才开始写博客,之前都是写笔记自己看,所以可能会存在表述不清,过于啰嗦等各种各样的问题,有什么疑问或者批评欢迎在评论区留言. 如果你初次接触协程,请先阅读上一篇文章初识asyncio协程对asy ...
- 一、初识asyncio协程
初识asyncio协程 一.基本概念 要想了解学习协程相关知识要先对以下几个概念先行了解: 阻塞 阻塞状态是指程序未得到某所需计算资源时的挂起状态,简单说就是程序在等待某个操作未执行完前无法执 ...
- 什么是协程?与线程和进程对比优劣在哪?gevent协程示例代码
协程 协程,又称微线程,纤程.英文名Coroutine..一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在 ...
- asyncio协程与并发
并发编程 Python的并发实现有三种方法. 多线程 多进程 协程(生成器) 基本概念 串行:同时只能执行单个任务 并行:同时执行多个任务 在Python中,虽然严格说来多线程与协程都是串行的,但其效 ...
- 后台程序处理 (一)python asyncio 协程使用
由于脚本需要在完成事件处理后N秒检查事件处理结果,当执行失败时再执行另一个事件处理. 想要最小化完成这个功能.同时在第一时间就将执行完毕的结果反馈给接口. 因此想到使用协程. 使用之前先翻阅了一下现有 ...
- python3之协程
1.协程的概念 协程,又称微线程,纤程.英文名Coroutine. 线程是系统级别的它们由操作系统调度,而协程则是程序级别的由程序根据需要自己调度.在一个线程中会有很多函数,我们把这些函数称为子程序, ...
- python---异步IO(asyncio)协程
简单了解 在py3中内置了asyncio模块.其编程模型就是一个消息循环. 模块查看: from .base_events import * from .coroutines import * #协程 ...
- python的多线程、多进程、协程用代码详解
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:刘早起早起 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
随机推荐
- 【模块04-大数据技术入门】02节-HDFS核心知识
分布式存储 (1) 5PB甚至更大的数据集怎么存储 ? 所有数据分块,每个数据块冗余存储在多台机器上(冗余可提高数据块高可用性).另外一台机器上启动一个管理所有节点.以及存储在各节点上面数据块的服务. ...
- golang json 读写配置文件
package main import ( "encoding/json" "fmt" "os" ) type configuration ...
- TNS-12535/12606 and ORA-3136 on Connection to Database (Doc ID 2313573.1)
今天遇到一问题 telnet 都是通的,但是两台数据库服务器还是无法 sqlplus 连接 ,最后发现 两台服务器的 mtu 值不同,其中一台为 1500 一台为9000, 以前只是认为 telnet ...
- let声明
<script> /** * es6 let 练习 * 生效范围:块级代码代码内. */ // { // let a=2; // var c=2; // } // console.log( ...
- 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...
- 微信小程序:动画(Animation)
简单总结一下微信动画的实现及执行步骤. 一.实现方式 官方文档是这样说的:①创建一个动画实例 animation.②调用实例的方法来描述动画.③最后通过动画实例的 export 方法导出动画数据传递给 ...
- 乡下人重拾MVC——创建视图
1. 创建视图都不勾选:代表不使用任何模版,页面的代码即为运行后显示的内容 2. 创建分部视图 代表统会自动把View文件夹下名为“_ViewStart.cshtml”的内容添加到新建的html最上 ...
- mybatis 中 foreach collection的三种用法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...
- LoadRunner 压力测试使用基础步骤
一.新建脚本 二.新建脚本-选择协议,这里选择Web (HTTP/HTML) 三.开始录制(指定程序与URL) 四.场景设计(设计虚拟用户访问场景) 五.运行情况(可以看到运行结果) 六.分析报告(总 ...
- springboot maven 报错ArtifactDescriptorException
maven具体报错提示如下: Description Resource Path Location TypeArtifactDescriptorException: Failed to read ar ...