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学习资料的小伙伴可以加点击下方链 ...
随机推荐
- Python开发【前端篇】JavaScript和Jquery
JavaScript嵌入页面的方式 1.行间事件(主要用于事件) <input type="button" name="" onclick="a ...
- 回去试idea
https://blog.csdn.net/s_eal/article/details/81486472?utm_source=blogxgwz0
- http协议进阶(五)连接管理
几乎所有的HTTP通信都是由TCP/IP承载的,TCP/IP是全球计算机网络设备都在使用的一种分组交换网络分层协议集. 它的特点是只要连接建立,客户端与服务器之间的报文交换就永远不会丢失.受损或失序. ...
- .Net Core应用框架Util介绍(三)
上篇介绍了Util的开发环境,并让你把Demo运行起来.本文将介绍该Demo的前端Angular运行机制以及目录结构. 目录结构 在VS上打开Util Demo,会看见如下的目录结构. 现代前端通常采 ...
- 迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。
Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Github : https://github.com/Dogwei/Swifter.Js ...
- Practical Mathematical Handwriting
In this article, I discuss the handwriting of $\mathbb{A}, \mathcal{A}, \mathscr{A}, \mathfrak{A}$'s ...
- JS 字符串处理相关(持续更新)
一.JS判断字符串中是否包含某个字符串 indexOf() indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1. var str ...
- max-height、min-height、height优先级的问题
前言 我们在实际开发中可能会限制元素的最大高度,那么我们使用的属性必定是max-height,那么不知道大家有没有考虑过如果同时设置max-height和height会发生什么呢? max-heigh ...
- redis哨兵(Sentinel)、虚拟槽分区(cluster)和docker入门
一.Redis-Sentinel(哨兵) 1.介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,r ...
- 10.1 ES6 的新增特性以及简单语法
ES6 的新增特性以及简单语法 let 和 const 模板字符串 箭头函数 对象单体模式 es6面向对象 模块化 let 和 const 之前一直用 var 来声明变量,ES6 新增 let 和 ...