• [学习记录]python中set,cls,字节,以及异步I/O


    python真的是常学常新,每过一段时间都会有新的认识,都会积累新的知识。不过这些知识本身也就应该在对python有了一定了解的基础上再进行学习,快速接收的话理解能力还是跟不上的。

    这里提供官方中文文档的链接,有空就可以多看看。

    set(),可以将列表转换为集合,集合自然就包括了去重功能

    cls,与self类似,在类中,self用来指代调用方法的实例,而cls则是指类本身,可以交给类方法来调用

    字节,使用bytearray()进行转换,常用来网络上传输信息

    ----------------------------------------------------------------------------------------------

    异步IO,这里使用官方的库asyncio

    异步IO较复杂,这里就只介绍一点入门的情况。

    asynico创造了一种协程的方式用来实现异步以及并发,与线程和进程有所不同。在代码层其实和多线程更类似一些,区别则是协程受python自身框架约束更多,而多线程更自由一些。

    关于多线程可以看看我之前简单写的一点多线程快速使用方法

    asynico收python版本影响,近几个版本改动较大,文档中有提到不同版本的区别,目前文档是基于python3.7来写的,同时对未来python3.10版本有了初步的规划。这些需要了解但不必费太多心思,这篇博客的目的只是为了能够快速了解如何使用asynico的基本功能

    1. async/await 语法

    协程通过async/await进行声明,简单的理解就是类似java中public   private  static这样的修饰前缀

    2.可等待对象

    一个可以在await语句中使用的对象就是可等待对象,大多数asyncio API都可以接收可等待对象,可等待对象一共有协程、任务、Future三种,协程通过 async  def定义一个函数作为协程,任务通过asyncio.create_task()来创建一个任务,而future通过loop.create_futere()进行创建,官方文档中不建议在应用层创建future

    3.运行一个可等待对象

    +asyncio.run(协程)

    +asyncio.ensure_future(可等待对象)

    4.并发运行

    asyncio.gather(协程1,协程2,协程3,...)

    5.事件循环

    事件循环是asyncio应用的核心,是底层存在,通常我们应该使用asyncio.run这类高层函数,而不是直接对底层的loop进行操作。

    获取一个loop可以使用asyncio.get_running_loop()

    通过loop运行一个future可以使用loop.run_until_complete(future)

    可以循环运行loop.run_forever(),相应使用loop.stop()终止循环,loop.close()可以关闭一个循环

  • 相关阅读:
    Ubuntu安装软件问题的解决
    寻找两个字符串中最长的公共部分字符串
    CentOS
    vim自定义配置
    git创建远程仓库以及在本地提交到远程仓库的方法
    黑金开发板在NiosII环境下烧写image到flash失败的解决办法
    f.lux 一款免费的护眼开源软件
    python 制作自动化脚本
    修改python 默认的存储路径
    第一篇博客
  • 原文地址:https://www.cnblogs.com/trickofjoker/p/11085311.html
Copyright © 2020-2023  润新知