请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

async,await实现异步

老师,我把课程代码稍微补充了下。想模拟异步网站请求。但从耗时来看,执行是同步的。我猜可能因为for循环是同步的。但不知怎么修改代码,或者说,要用async,await实现这样的需求,该怎么写代码呢?图片描述

正在回答

插入代码

2回答

await asyncio.sleep(3)

你的sleep要换成这个,课程中专门强调过的,不能使用阻塞的sleep

1 回复 有任何疑惑可以回复我~
  • 提问者 慕标1049315 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-05-09 14:14:43
bobby 2021-04-27 10:26:48

你把完整的代码贴一下 我运行一下试试把

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标1049315 #1
    完整代码如下:
    import asyncio
    import time
    
    
    async def downloader(url):
        # 模拟下载
        time.sleep(3)
        res = "download from{}".format(url)
        return res
    
    
    async def handle(url_list):
        res = ''
        for url in url_list:
            html = await downloader(url)
            res += html
        return res
    
    
    if __name__ == "__main__":
        urls = ["http://www.baidu.com", "http://www.sina.com"]
        coro = handle(urls)
        start_time = time.time()
        try:
            coro.send(None)
        except StopIteration as e:
            print(e.value)
        print("耗时:", time.time()-start_time)
    回复 有任何疑惑可以回复我~ 2021-04-27 13:47:41
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号