Python基础-协程(二)

协程函数
使用async修饰
await:修饰需要耗时的操作,当遇到await时会去执行下一个协程任务,当await时间结束时,立刻回来执行原来的操作

import asyncio,time,threading

async def func1(num):
    print(num,'before---func1----')
    await asyncio.sleep(num)
    return "recv num %s"%num

def start_loop(loop):
    asyncio.set_event_loop(loop)
    loop.run_forever()

if __name__ == "__main__":
    begin = time.time()

    coroutine1 = func1(5)
    coroutine2 = func1(3)
    coroutine3 = func1(4)

    new_loop = asyncio.new_event_loop() #在当前线程下创建时间循环,(未启用)
    t = threading.Thread(target=start_loop,args=(new_loop,))    #开启新的线程去启动事件循环
    t.start()

    asyncio.run_coroutine_threadsafe(coroutine1,new_loop)  #传参必须是协程对象
    asyncio.run_coroutine_threadsafe(coroutine2,new_loop)
    asyncio.run_coroutine_threadsafe(coroutine3,new_loop)

    end = time.time()
    print(end-begin)    #当前线程未阻塞,耗时0.010000467300415039
posted on 2020-03-07 17:11  仓鼠不爱吃辣条  阅读(128)  评论(0)    收藏  举报

页尾

页尾

页尾

页尾

页尾

页尾

页尾