猫史档案馆


【干货】async和await的用法

用户:函数Chara函数Chara查看:6 回复:4 评论:6 创建时间:2020-02-09T19:33:03


函数驾到!!!!

emotion_编程猫_翻白眼emotion_编程猫_翻白眼emotion_编程猫_翻白眼

不玩了,可能你们都想学并发编程。今天俺就教你们!

emotion_星能猫_yeemotion_星能猫_yeemotion_星能猫_ye

                            (呵呵)

我们用“洗衣服”案例:

# 创建同步函数,洗衣房
async def washroom1():
    pass

async,同步,创建同步函数。

import time
import asyncio
# ...
async def washroom1():
    async def wash1():
        #洗衣机1
        await asyncio.sleep(3)
        print("OK")

    async def wash2():
        #洗衣机2
        await asyncio.sleep(4)
        print("OK")

    async def wash1():
        #洗衣机3
        await asyncio.sleep(5)
        print("OK")

使用time库是为了计时。

asyncio是主要的。

这三个洗衣机(三个线程)。放在同一个洗衣房(进程)里

[敲黑板]重点来了!

重点

task = [
    wash1(),
    wash2(),
    wash3()
]
loop = asyncio.get_event_loop() #创建事件循环
loop.run_until_complete(async.wait(task)) #启动多线程
pass

我们再定义一个使用asyncio之前的函数:

def washroom2():
    def wash1():
        #洗衣机1
        time.sleep(3)
        print("OK")

    def wash2():
        #洗衣机2
        time.sleep(4)
        print("OK")

    def wash1():
        #洗衣机3
        time.sleep(5)
        print("OK")
    wash1()
    wash2()
    wash3()

再定义一个计时函数:

def tick(method):
    start = time.time()
    method()
    end = time.time()
    return start - end

(注:关于回调函数,我会另发帖子,此处不买一送一)

最后是主函数:

def main():
    print(tick(washroom1))
    print(tick(washroom2))

(所以我叫“函数”)

最终结果大家可以试试,我是:

1:OK
2:OK
3:OK
4:5.10429214312134
5:OK
6:OK
7:OK
8:12.015687465667725

最后,我发现一件事:

我每次用Python评论时,都会有bug

而我每次发帖时,都没错。

有帮助的,给个顶


回复

上一页1 页 / 共 1下一页
函数Chara函数Chara

自顶

点赞0


评论


wrmdcxywrmdcxy

emotion_编程猫_点赞不错不错

对于倒数第二句和倒数第三句我表示:哈哈,有同感

点赞0


评论


AC0766AC0766

不错哦~为你点赞

点赞0


评论


wrmdcxywrmdcxy

对了,结果应该是负数吧,你是start-end,不是end-start。

还有,请问wash3()啥时候定义的?

点赞0


评论