请稍等 ...
×

采纳答案成功!

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

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下载
官方微信