简述

       asyncio 是以协程的模式来编写并发的库,使用 async/await 语法。
       在 IO密集型 的网络编程里,异步IO 协程 省去了开辟新的线程和进程的开销。
       asyncio 是 Python3.4 版本引入到标准库,python3.5 加入了 async/await 特性。

 

常用方法:

        async 声明协程

        await 等待一个协程

        await asyncio.sleep(1) 协程休眠

        asyncio.run(func())用来在非协程函数中调用协程

        asyncio.create_task() 用函数将协程打包为一个 Task 排入日程准备执行,返回 asyncio.Task 对象。

        asyncio.gather() 函数来并发多个协程。

 

问题一:

          “RuntimeError: There is no current event loop in thread 'Thread-1'”

           在 thread-1的线程中没有事件循环,asyncio 中,先要创建一个 get_event_loop 的对象,然后需要生成一个类型是 list 的 tasks
最后把 tasks 放入 run 中进行循环处理

           在 loop = asyncio.get_event_loop()上面添加下面两条指令:

           new_loop = asyncio.new_event_loop()
           asyncio.set_event_loop(new_loop)

          

问题二:

         “OSError: Unable to remove Temporary User Data”

         这个是因为项目的临时数据目录是存在了c盘,但是当删除它的时候,应该是遇到了权限问题,没有权限没法删除,需要增加到有权限的目录即可

         browser = await launch(headless=False, userDataDir='./cache/')