asyncio模块实现线程的嵌套和穿插
import asyncio
import time
now = lambda :time.time()
async def cpc_1(x):
print('正在烙比萨饼,预计{}分钟'.format(x))
await asyncio.sleep(x)
return '{}分钟后,北武堂的小伙伴们吃起了比萨饼'.format(x)
async def cpc_2(x):
print('正在用冰块镇零度可乐,预计{}分钟'.format(x))
await asyncio.sleep(x)
return '{}分钟后,北武堂的小伙伴们喝起了冰镇饮料'.format(x)
async def cpc_3(x):
print('夫妻肺片和其他凉菜马上送到,预计{}分钟'.format(x))
await asyncio.sleep(x)
return'{}分钟后,北武堂的小伙伴们吃起了凉菜'.format(x)
async def main():
cp1 = cpc_1(30)
cp2 = cpc_2(15)
cp3 = cpc_3(5)
tasks = [asyncio.ensure_future(cp1),asyncio.ensure_future(cp2),asyncio.ensure_future(cp3)]
done,pending = await asyncio.wait(tasks)
for i in done:
print(i.result())
start = now()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
print("总耗时......{}".format(now()-start))
执行结果: 正在烙比萨饼,预计30分钟
正在用冰块镇零度可乐,预计15分钟
夫妻肺片和其他凉菜马上送到,预计5分钟
30分钟后,北武堂的小伙伴们吃起了比萨饼
5分钟后,北武堂的小伙伴们吃起了凉菜
15分钟后,北武堂的小伙伴们喝起了冰镇饮料
总耗时......30.00571608543396
asyncio模块实现线程的嵌套和穿插的更多相关文章
- asyncio模块
asyncio模块 这是官网也非常推荐的一个实现高并发的一个模块,python也是在python 3.4中引入了协程的概念. asyncio 是干什么的? 异步网络操作 并发 协程 python3 ...
- python协程--asyncio模块(基础并发测试)
在高并发的场景下,python提供了一个多线程的模块threading,但似乎这个模块并不近人如意,原因在于cpython本身的全局解析锁(GIL)问题,在一段时间片内实际上的执行是单线程的.同时还存 ...
- Python之路(第四十七篇) 协程:greenlet模块\gevent模块\asyncio模块
一.协程介绍 协程:是单线程下的并发,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的. 协程相比于线程,最大的区别在于 ...
- Python asyncio 模块
Python 3.4 asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接获取一个EventLo ...
- asyncio模块实现单线程-多任务的异步协程
本篇介绍基于asyncio模块,实现单线程-多任务的异步协程 基本概念 协程函数 协程函数: 定义形式为 async def 的函数; aysnc 在Python3.5+版本新增了aysnc和awai ...
- Python之asyncio模块的使用
asyncio模块作用:构建协程并发应用的工具 python并发的三大内置模块,简单认识: .multiprocessing:多进程并发处理 .threading模块:多线程并发处理 .asyncio ...
- 读asyncio模块源码时的知识补漏
硬着头皮看了一周的asyncio模块代码,了解了大概的执行流程,引用太多,成尤其是对象间函数的引用. 光是这么一段简单的代码: # coding: utf8 import asyncio import ...
- Python使用Threading模块创建线程
使用Threading模块创建线程,直接从threading.Thread继承,然后重写__init__方法和run方法: #!/usr/bin/python # -*- coding: UTF-8 ...
- python3.6以上 asyncio模块的异步编程模型 async await语法
这是python3.6以上版本的用法,本例是python3.7.2编写使用asyncio模块的异步编程模型,生产这消费者,异步生产,用sleep来代替IO等待使用async和await语法来进行描述a ...
随机推荐
- windows远程重启
用管理员权限打开win+r,输入cmd后: net use \ip地址 "管理员密码" /user:administrator shutdown /r /t 0 /m ip地址 即 ...
- [转帖]订购微软Windows 7延长支持服务的报价曝光 第三年要价两百美金
订购微软Windows 7延长支持服务的报价曝光 第三年要价两百美金 cnbeta 年2月份的新闻 https://www.cnbeta.com/articles/tech/815885.htm 微软 ...
- CodeBlocks 配置
CodeBlocks 配置 Code::Blocks 17.12 时间:2019.6 下载网址 http://www.codeblocks.org/downloads/26 ,这里选择的是 mingw ...
- SpringBoot以WAR包部署遇到的坑---集合贴
⒈忽略tomcat的context-path 方式一: 停止tomcat服务,删除tomcat安装目录的webapps目录下的ROOT目录,将打成的WAR包重命名为ROOT.war,重启tomcat服 ...
- hdu4813 01背包+前缀和
题意:\(A,B\)两人,有\(N\)个事件,每件发生的概率都为\(0.5\),若事件\(i\)发生,则\(B\)加\(v_i\)分数,若其不发生,则\(B\)不加分,给定一个概率\(P\),问至少需 ...
- -bash: /usr/librxec/grepconf.sh:Nosuch file or directory
最近修改/etc/profile文件时,不小心在后面添加了source /etc/profile,导致使用xshell登录远程linux的时候出现下面的信息, 一直无法进入linux,将profile ...
- vue中非父子组件的传值bus的使用
非父子之间的组件传值,可以使用vuex.简单的状态管理,也可以用vue bus vue bus可以实现不同组件间.不同页面间的通信,比如我在A页面出发点击事件,要B页面发生变化,使用方法如下: 全局定 ...
- linux 文件操作与目录操作
文件操作 使用命令 命令格式: 命令 [选项] [参数] [] 表示可选的 示例: ls -a /etc 常识命令 ls:查看指定目录的内容,不指定目录时查看当前工作目录 选项 说明 -a 显示所有文 ...
- Vue移动端焦点状态跳转页面,焦点和键盘不消失的问题
问题:input搜索,在移动端焦点状态跳转页面,焦点不失焦,还在跳转后的页面闪烁,且键盘不消失 //主动隐藏键盘 document.getElementById('inputSearch').blur ...
- 【3】Git命令
个人推荐的Git知识学习网站:https://git-scm.com . git常用操作图 init -> add -> commit -> remote -> push 初始 ...