python 基础高级
文章平均质量分 52
python相关内容
tnan2522
这个作者很懒,什么都没留下…
展开
-
python 支付宝营销活动现金红包开发接入流程-含接口调用加签
python 接入支付宝营销活动,发红包,调用支付宝接口加签使用记录原创 2023-03-02 18:54:56 · 764 阅读 · 0 评论 -
nacos配置中心使用记录
nacos是一个分布式配置中心,可用它做配置管理、服务发现等,目前用到它的是配置中心的功能在日常的web开发中常常会用到一些配置,如数据库连接地址、端口、账号、密码,jwt密钥等配置,如果是直接写在config配置文件中的话,等项目启动后再想变更配置参数会很麻烦,而且如果服务多的话修改起来也麻烦,所有需要一个配置中心记录配置信息,各个服务都从配置中心中拉取配置参数,后端服务做个长轮训监听配置中心的配置消息,如果有变动则更新服务中的配置。原创 2022-12-16 11:29:35 · 546 阅读 · 0 评论 -
python api、grpc consul 服务注册发现使用记录
consul 是一个服务注册、服务发现平台,可以接受api 或grpc 服务连接, 具有健康检查功能,consul的作用是将多个相同服务的服务器ip+端口收集为一个服务进行关联。原创 2022-12-15 19:12:45 · 310 阅读 · 0 评论 -
python grpc 拦截器使用记录
grpc 拦截器(同步 异步)使用记录原创 2022-12-08 19:13:46 · 604 阅读 · 0 评论 -
python thread.local 和 ContextVar 使用
在python中我们想要针对多任务如 多线程,每一个任务调用期间保存一份属于任务特有的变量时可以使用thread.local 线程本地变量或上下文变量, thread.local是针对于多线程的,在多线程中共用一个全局变量,但是每个线程变量从这个全局变量中获取、设置的变量针对于本线程,通过thread.local 可以实现线程隔离。原创 2022-12-01 17:17:38 · 328 阅读 · 2 评论 -
理解python中的yield、yield在协程中的作用以及实现一个简单的事件循环
个人理解 python异步中的 Future 、task对象以及事件循环的执行流程原创 2022-06-29 17:21:32 · 388 阅读 · 0 评论 -
asyncio server protocol协议
在python asyncio 库中可以创建 server 和 connection, 想要使用 asyncio 创建 server服务器的话需要一个 protocol 协议对象处理请求服务, 在asyncio 中,server 底层是tcp server, 想要实现web server 就需要实现 protocol协议,用自定义的protocol 来处理解析请求数据protocol在asyncio中定义了server 请求进来的处理协议, 常用的有:# 创建http协议处理对想class Http原创 2022-02-14 16:22:00 · 427 阅读 · 1 评论 -
python grpc 异步调用使用记录
protobufsyntax = "proto3";option go_package = "./;proto";service StreamRpc{ rpc GetServerResult(Requests) returns (Reply); rpc GetServerStream(Requests) returns (stream Reply); rpc ClientSendStream(stream Requests) returns (Reply); rpc ServerCl原创 2022-01-04 17:59:25 · 1574 阅读 · 3 评论 -
grpc python使用记录
rpcRPC是远程过程调用(Remote Procedure Call)的缩写形式, 在python中, 有 基于 xml , json ,mq(zeromq) 的rpc 框架, 现在记录grpc 在 python中的使用grpcgrpc 是一个跨语言的通用rpc框架, 比 SimpleXMLRPCServer, jsonrpclib 性能要高, 比zerorpc 支持的语言多, grpc 传输协议用的是http2 , 序列化用的是protobuf, grpc中有一元调用,单向流式调用,双向流式调用这原创 2022-01-03 17:38:40 · 603 阅读 · 0 评论 -
python 多态 协议 鸭子类型
接口(python 中的协议)的多种不同的实现方式即为多态。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。from abc import ABCMeta, abstractmethod# 鸭子类class Dock(metaclass=ABCMeta): @abstractmethod def Swimming(self): # 游泳方法协议(接口) pass @abstractmethod # 走路协原创 2021-11-25 23:13:48 · 480 阅读 · 0 评论 -
async futrue 和 concurrent.futures 区别
asyncio future 和 concurrent.futuresasyncio future 是协程实现的异步方式, concurrent.futures 是通过线程池或进程池实现的异步两个future 是不一样的, 但是,asyncio 可以将 concurrent.futures 线程池或进程池实现的异步转换为协程方式的异步, 用await 的方式 等待 concurrent.futures 调用结束, 这种一般适应于 未支持异步协程库的方法调用上,异步任务中需要异步io操作,但是 没有对原创 2021-07-22 15:14:01 · 288 阅读 · 0 评论 -
asyncio future 和 task
asyncio future 和 taskfuture 是一个协程等待对象, task 任务等待是基于这个等待对象的,task 对象继承future,await 开启 future 对象后 当前协程会陷入等待,执行权会让出去, 当给future对象 set_result赋值后 future才会被唤醒,task 对象继承了 future对象, 遇到io堵塞的时候就将执行权让出去,当io结束,系统给set_result 赋值的时候,task对象就被唤醒, task是基于future 上的,可以通过io原创 2021-07-22 15:13:29 · 305 阅读 · 0 评论 -
async 异步
什么是协程, 为什么要用协程协程是用户态的线程,是实现多任务的一种方式,为什么不用多线程实现多任务而是用协程呢? 因为协程的切换是在代码中逻辑切换的, 协程任务的切换不需要到cpu内核中进行切换, 因此,协程的切换要比线程快,资源消耗要比线程小,在web开发中大都是io任务,python中的多线程有GIL锁,实际上也是单线程,无法真正利用cpu多核并行,况且, web 开发大都是 io堵塞等待, 多线程争抢到gil锁大多时间都耗费在io等待上异步是基于事件轮询的多任务, 遇到io堵塞的时候会自动让出原创 2021-07-22 15:06:54 · 97 阅读 · 0 评论 -
直播推流 ffmpeg 拉流二次转发 记录
因前两天老大给我发了个任务,说让我做一个flask 服务器接口,接收请求,在请求参数中获取 直播拉流地址和 推流地址,然后调用 ffmpeg 到拉流地址上进行拉流 将拉到的流媒体数据推到另一个直播服务器上,简单来说就是直播的二次转发过程什么鬼, 拉流是什么东西?推流又是什么?ffmpeg 又是个什么鬼?obs又是什么?啥是推流码?啊这但是看他说这很简单的,我也就十分配合的一边点头,一边复读:是是是, 好的,没问题回去后我百度了下obs ,哦,原来是一个流媒体采集软件啊,简单来说就是采集当前的屏原创 2020-11-14 21:14:25 · 4337 阅读 · 0 评论 -
python 创建虚拟环境使用记录
1 virtualenv可以使用 virtualenv 模块来创建虚拟环境,创建命令: virtualenv 虚拟环境名字进入虚拟环境命令 : soruse 虚拟环境名称/Script/activate退出命令: deactivate2 virtualenvwrapper这个是基于 virtualenv 进行封装的, 好处在于创建好虚拟环境后可以在任意位置 使用 work 就可以查看所有虚拟环境并且 使用work 也可以直接进入虚拟环境创建: mkvirtualenv 虚拟环境进入:wor原创 2020-11-16 09:42:51 · 107 阅读 · 0 评论 -
Python with,多继承
withwith 就是上下文协议,可以自动的帮你将上下文管理器资源关闭,如 用with open 打开了一个文件,后面你就不用手动的将它关闭,在with 中会自动的帮你关闭该资源在一个类中只要实现了 __enter__()和 __exit__()方法的类就是一个上下文管理器, 当使用with 这个实例对象的时候 会调用 __enter__()方法,这个方法打开文件,或连接数据库,如何返回该操作的对(打开文件的对象或连接数据库的对象) 当这个资源对象使用结束后,会自动调用 上下文管理器中的 __exi原创 2020-07-24 17:09:32 · 114 阅读 · 0 评论 -
python 描述符
描述符就是装饰一个方法,通过调用属性的形式调用方法, 如之前的 property就是描述符,那么有了 property还会有描述符呢?因为property不能做到复用,如果我们有n个 属性需要装饰的话,那么需要 n * 2 个property装饰方法,而描述符就可以将相同功能的代码给重复利用到,减少代码量,让代码更简洁描述符对象在一个类中,只要实现 __set__, __get__, __delet__任意一个方法的的类就是一个描述符类,用它创建的对象就是描述符对象class A: def _原创 2020-07-23 16:16:23 · 63 阅读 · 0 评论 -
python基础2
动态添加属性或方法python是一门动态语言, 它可以在程序的运行过程中动态的给类添加属性或方法, 这静态语言办不到的,class Per: def __init__(self): self.age = 10Per.name = "laowang"p = Per()print(p.age)print(p.name)可以看到, 在类的项目 Per.name = “laowang” 就可以将name属性添加到类里面了也可以使用 p.name = “老王” 这时候添加的属性是添加原创 2020-07-23 10:46:53 · 75 阅读 · 0 评论 -
python基础1
字典操作update将两个字典和并:a = {"10": 20}b = {"20": 30}a.update(b) # 这样就可以将b字典中的数据添加到a字典中了多行代码写在一行在python也是可以使用 ;分行符的,可以在这个分行符后面写第二行的数据,如a = {"10": 20};b = {"20": 30};print(a.update(b))地板除法地板除法其实就是取整,//字符串/列表切割python中切割字符串或列表是不可到序的, 如a = "abcdefg"原创 2020-07-23 09:18:39 · 83 阅读 · 0 评论 -
python os 完成获取当前目录下所有文件和文件夹
递归可以通过os.listdir 获取当前目录下的文件和文件夹, 然后for循环遍历, 再用os.path.isdir(path, i)判断当前遍历的文件是否是文件夹, 如果是文件夹,则将该文件和路径传递到当前函数,递归获取这个文件夹下的文件和文件夹使用递归弊端,python中的递归也不是无限次的,因为每递归一次都要压栈一次,要保留当前函数的数据内容,耗费内存,当正常递归到1000次左右...原创 2020-04-20 21:29:38 · 8687 阅读 · 0 评论 -
迭代器,生成器,装饰器的理解
迭代器,生成器,装饰器的理解迭代器生成器闭包装饰器迭代器迭代器是一个可以记住遍历位置的对象,可以将一个可迭代对象中的数据全部获取一遍, 一般可以进行for循环的对象都是可迭代对象如,列表, 字符串, 元组等在一个类中,只要实现了__iter__方法的对象都是可迭代对象, 在实现__iter__的前提再实现__next__方法的对象就是迭代器了from collections impor...原创 2020-04-07 20:09:57 · 264 阅读 · 0 评论 -
Python yield协程 gevent的理解
yield如:import timedef a(): for i in range(10): yield time.sleep(1)def b(): for i in range(10): yield time.sleep(1)a1 = a()b1 = b()while 1: next...原创 2020-04-07 20:30:04 · 153 阅读 · 0 评论 -
Python GIL 全局解析器锁和互斥锁
1 GIL首先要明白什么是GIL锁,GIL锁是python解释器中保证在一个进程中只要一个线程在运行的锁,它保障了整个python运行只有一个线程,即使你开了多线程任务,它只能是并发而不是并行,而为什么有了这个保障只有一个线程运行的锁之后还要有互斥锁呢, 是因为在python的多线程任务中,多个线程是会对运行的条件进行争夺的,争夺运行的机会,如:import threadingimport ...原创 2020-04-07 20:55:27 · 307 阅读 · 0 评论