python 协程之asyncio (二)
并发
协程是一种并发机制,和并行是有区别的。
并发是指一个处理器同时处理多个任务。逻辑上的同时发生。
并行是指多个处理器或者多核的处理器同时处理多个不同的任务。物理上的同时发生。
接下来创建多个协程
import asyncio,time async def say(name,hour): print ('%s 等待%d秒'%(name,hour)) await asyncio.sleep(hour) name_list=['jack','tom','mary','susan'] now=lambda:time.time() start=now() # 创建协程对象 coroutine_list=[] for i in range(len(name_list)): name=name_list[i] hour=i+1 coroutine_list.append(say(name,hour)) # 创建事件循环 loop=asyncio.get_event_loop() # 创建任务对象 task_list=[] for i in coroutine_list: task_list.append(loop.create_task(i)) # 注册任务对象 for task in task_list: loop.run_until_complete(task) print('耗时: %0.3f'%(now()-start))
如果单协程执行耗时就是1+2+3+4=10秒,这里做了异步化,所以在遇到阻塞的时候挂起去执行其他的任务,因此在阻塞4秒的时候足够其他的协程执行,所以仅仅耗时4秒。