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秒。

 

posted @ 2021-10-22 14:42  瘦阿瘦  阅读(61)  评论(0编辑  收藏  举报