网络爬虫(十三)

作者: zhangxiaohao | 来源:发表于2019-05-22 06:43 被阅读0次

    协程移步执行

    主要注意:
    • 当作任务执行的函数前面要加async修饰。async def req(url):
    • 在被当做任务调用的函数(如async def req(url)函数)中,如果用于异步,函数中的语句必须是支持异步,在req(url)函数中,time.sleep()就是同步的语句,在函数运行时不会出错,但会同步执行,必须用asyncio.sleep(2)这个能异步执行语句才能实现异步执行。
    • 生成协程任务用: task=asyncio.ensure_future(c)
    • 放入的任务要用asyncio.wait(tasks)才能实现异步执行
      loop=asyncio.get_event_loop()
      loop.run_until_complete(asyncio.wait(tasks))
    import time
    tasks=[]
    urls=['url1','url2','url3','url4']
    async def req(url):
        print('start')
        asyncio.sleep(2)#这是异步执行语句
        #time.sleep()#这是同步执行语句,所以不能用这种语句
        print('end')
    for url in urls:
        c=req(url)
        task=asyncio.ensure_future(c)
        tasks.append(task)
    loop=asyncio.get_event_loop()
    loop.run_until_complete(asyncio.wait(tasks))
    
    演讲

    相关文章

      网友评论

        本文标题:网络爬虫(十三)

        本文链接:https://www.haomeiwen.com/subject/ssdqzqtx.html