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