Python
文章平均质量分 67
python综合
liyuanchao_blog
这个作者很懒,什么都没留下…
展开
-
Python利用抽象方法实现类似Golang的interface
什么是多态性即一个接口,多种实现。原创 2022-08-06 19:21:05 · 296 阅读 · 0 评论 -
Consul实现http或者grpc服务的注册与发现,Golang、Python的使用记录
consul官网Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性:服务发现 Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务.健康检查 Consul客户端可用提供任意数量的健康检查,指定一个服务(比如:webserver是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%). 这个信原创 2021-12-09 13:37:10 · 8069 阅读 · 0 评论 -
Python3中impolib模块的reload使用时需要注意的地方
与 Python 2 不同,reload 在最新的 Python 中不再作为内建函数存在了,而被移入标准库 importlib 模块中。实验1,reload基本使用假设我们有个模块叫做config.py导入一下config模块(如果导入报错找不到config模块,请配置模块的搜索路径先再来测试如下的步骤),如下我们在右边终端修改b变量的值为20保存退出,再次导入(这个时候我们退出左边的交互式环境),可以看到b的值并没有发生变化,那有没有不退出左边的交互式环境,热加载呢有的,这原创 2021-09-25 18:21:37 · 9136 阅读 · 0 评论 -
Python和Golang协程的区别
背景最近在做后端服务python到go的迁移和重构,这两种语言里,最大的特色和优势就是都支持协程。之前主要做python的性能优化和架构优化,一开始觉得两个协程原理和应用应该差不多,后来发现还是有很大的区别,今天就在这里总结一下。什么是协程在说它们两者区别前,我们首先聊一下什么是协程,好像它没有一个官方的定义,那就结合平时的应用经验和学习内容来谈谈自己的理解。协程其实可以理解为一种特殊的程序调用。特殊的是在执行过程中,在子程序(或者说函数)内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着转载 2021-07-25 18:25:05 · 8194 阅读 · 0 评论 -
Python装饰器的总结,感觉总结的比较通透
简述当有多个装饰器叠加时,从最靠近被装饰函数的装饰器开始执行。就算被装饰函数不被调用,只要程序模块开始被运行,那么装饰器中的逻辑也会开始执行,这个和闭包有关。闭包知识补充(大白话)在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数就被认为是闭包。不带参数的装饰器举例from functools import wrapsdef register1(func): print('running register1 {}'.fo.原创 2021-07-24 22:09:58 · 8560 阅读 · 13 评论 -
pip包管理工具使用总结
安装管理以 Python 库 requests 为例:安装 Python 库pip install requests安装指定版本的 Python 库pip install requests==2.25从本地wheel文件安装pip install requests‐2.25.1‐py3‐none‐any.whl从 git 仓库安装pip install git+https://github.com/psf/requests.git从国内镜像安装pip ins原创 2021-07-18 23:38:26 · 8389 阅读 · 1 评论 -
如何查看以及修改Cpython中GIL的切换周期,验证GIL存在,的确多线程修改共享数据也不安全
python2默认值为100,表示每100条Python虚拟指令执行一次检查sys.getcheckinterval()sys.setcheckinterval(1000000)标题python31.python3中GIL的切换改成了时间片轮转,默认切换周期为0.005秒sys.getswitchinterval()sys.setswitchinterval(1)2.python3中实验1>以下代码在不使用互斥锁的情况下,只需要修改cpython默认的GIL切换时间同样可以达到原创 2021-03-12 20:13:33 · 8066 阅读 · 0 评论 -
python操作带Kerberos验证的Kafka
安装Kerberos客户端yum install krb5-workstation使用which kinit查看是否安装成功;安装gssapi和kafka-python模块pip install gssapi kafka-pythonpython demo如下# -*- coding: utf-8 -*-import osimport jsonimport timefrom kafka import KafkaProducerfrom kafka import Kafk..原创 2021-03-03 15:32:33 · 8949 阅读 · 4 评论 -
那些python中的坑,你都踩过吗
pit1、在访问列表的时候,修改列表(可变对象都会存在类似的问题,这里就不一一验证了)看一个例子,删除列表中3的倍数def test(a): for index, value in enumerate(a): if value % 3 == 0: del a[index]b = [1, 2, 3, 4, 5, 6]test(b)prin...原创 2020-11-05 01:46:24 · 7905 阅读 · 0 评论 -
扩展Python装饰器的功能
目录回忆setattr和getattr扩展装饰器的功能回忆setattr和getattr我们都知道setattr和getattr操作是我们操作某个对象时获取对象属性,或者给某个对象设置属性来用的class Test(object): def __init__(self): self.name = 'haha'test = Test()print(getattr(test, 'name'))setattr(test, 'age', 16)print(getattr(原创 2020-05-17 20:54:13 · 7796 阅读 · 0 评论 -
Python没有switch...case语法,如何优雅的避免if..elif...elif...else...
例如我们要把如下的一段代码给转换为非if…elif…elif…else…的代码结构def convert_grade(scr): if scr >= 90: print('A') elif scr >= 80: print('B') elif scr >= 70: print('C') elif s...原创 2020-04-19 16:51:07 · 12452 阅读 · 0 评论 -
subprocess时报sudo: sorry, you must have a tty to run sudo
1.一般我们在python代码中要执行Linux命令行时,一般都会使用subprocess这个模块来做。2.但是我们用subprocess执行大多数命令都是可以直接挂在后台执行的,也就是它的stdin参数可以直接指定一个管道subprocess.PIPE,也就是如下这样:import subprocessp = subprocess.Popen(cmd, shell=True, stdin=...原创 2020-01-01 21:26:50 · 11804 阅读 · 0 评论 -
最简单的方式在window和Linux安装不同版本的python环境
Linux我们在centos7上做实验,它自带python2.7,现在我们要安装一个python3.7.5# 从官网下载对应版本的源码https://www.python.org/downloads/source/# 解压$ tar -zxvf xxxxx$ cd xxxx# 创建安装目录$ sudo mkdir -p /usr/local/python3# 配置、...原创 2019-12-27 19:36:26 · 11542 阅读 · 2 评论 -
python中format时对大括号的转义
在对字符串处理时,更喜欢用format来进行相应的处理,但是如果我们的字符串是下面这样一个字符串exec_command呢?hana_adm = 'hxe_adm'full_backup_file = '/tmp/flashbackup_tmp/117/systemdb/full_databackup_0_1'exec_command = "su - {} -c \"hdbbackupche...原创 2019-12-19 19:20:38 · 22187 阅读 · 1 评论 -
再次理解python多继承mro的深度优先
最近在使用多继承时再次体验了一把mro,最近工作中遇到的简化以下代码结构既可以写出一个小例子,如下:class A(object): def __init__(self, params): self.a_name = 'name_a_{}'.format(params['name']) self.a_age = 'age_a_{}'.format(par...原创 2019-12-18 10:12:18 · 11404 阅读 · 0 评论 -
suse12中pip install xxx报错gcc: error: unrecognized command line option ‘-fstack-clash-protection’
我们在Linux中安装某些python的第三方包时,有时候需要gcc来进行协助编译安装(例如psutil、pycrypto等)1.很不幸,最近在suse中用pip install psutil时就遇到以上错误了:2.经查阅资料后发现gcc: error: unrecognized command line option ‘-fstack-clash-protection’是因为gcc版本的问...原创 2019-12-15 10:12:11 · 13663 阅读 · 0 评论 -
Python Popen communicate() 和wait()的区别体验
测试环境centos7ulimit -a 看到的 pipe size 是 4KB,那只是每页的大小,查询得知 linux 默认的 pipe size 是 64KB。简单说communicate() 和wait()的区别,使用 subprocess 模块的 Popen 调用外部程序,如果 stdout 或 stderr 参数是 pipe,并且程序输出超过操作系统的 pipe size时,如果使用...原创 2019-12-11 11:49:14 · 17992 阅读 · 0 评论 -
python中encode和decode的总结
decode的作用是将其他编码的字符串转换成unicode编码encode的作用是将unicode编码转换成其他编码的字符串1.python3和python2默认的编码方式是不一样的,如下图2.unicode 转换为其它编码(GBK, GB2312等)# -*- coding=gb2312 -*-a = u"这里是中国,犯我中华者,虽远必诛"print aa_gb2312 = a...原创 2019-12-10 19:56:55 · 11053 阅读 · 0 评论 -
python socket编程知识汇总
Python 提供了两个基本的 socket 模块。第一个是 Socket,它提供了标准的 BSD Sockets API。第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。下面讲的是Socket模块功能1、Socket 类型套接字格式:socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0)来...原创 2019-12-09 23:52:56 · 11173 阅读 · 0 评论 -
python高级文件、文件夹、压缩包 处理模块shutil
我们来看一看shutil有哪些接口很多吧,之所以说它高级,举个简单的例子吧例如我们在删除文件时,用os.remove也可以实现,但是它只能一次删除一个,然而我们的shutil.rmtree可以递归删除某个目录下说有的文件以及目录当然shutil的功能远不如此,下面我们就来简单的列举一下1.shutil.copyfileobj(fsrc, fdst[, length])(copyfileo...原创 2019-12-05 23:48:41 · 11146 阅读 · 0 评论 -
json的两种格式以及python中json的序列化的两种方式
1、键值对形式{ "label": "edb1.yuchai.com(10.10.182.11)", "open": true, "inode": true, "checkbox": false, "id": "5714bc22b4b24604a45452fd2cca38b0", "branch": [{ "label": "/dev/dm-7(Linux device-mapp...原创 2019-12-02 23:47:03 · 11615 阅读 · 0 评论 -
从yield到yield from
yield带有 yield 的函数不再是一个普通函数,而是一个生成器generator把生成器当作管道def add_A(seq): for item in seq: yield item + '-A'def add_B(seq): for item in seq: yield item + '-B'def add_C(seq):...原创 2019-12-01 23:14:04 · 11091 阅读 · 0 评论 -
python中for循环的原理剖析
简述当我们在使用for循环时,即重复运行一个代码块,或者不断迭代容器对象中的元素,比如一些序列对象,列表,字典,元组,甚至文件等,而for循环的本质取出可迭代对象中的迭代器然后对迭代器不断的操作。例如迭代文件:注:本文针对的示例是针对Python3,同时对Python2做了注释,注意区分自己使用的版本。>>> for line in open("requirement.t...原创 2019-12-01 22:12:58 · 13239 阅读 · 0 评论 -
django中model的对应关系
django模型python manage.py makemigrationspython manage.py migrate一、一对多class A(): name=.... passclass B(): ab=models.Foreignkey(A,related_name='bs')Agraph LRA(一)–>B(多)一个A对应的所有B,...原创 2019-12-01 18:00:13 · 11548 阅读 · 0 评论 -
python2.x和python3.x不一样的地方
在python3中,False和True是真正的保留字,而不是被定义在内置模块的名字空间(builtins)的名字。True和False在Python2中是两个全局变量,数值上对应1和0,既然是变量就可以被赋值,但这样容易造成混乱;故在Python3中 True和False变为两个关键字,永远指向两个固定对象,不允许被重新赋值。python2中:>>> True+=1&g...原创 2019-11-25 23:36:20 · 11652 阅读 · 0 评论 -
python建议:警惕eval函数的安全漏洞
如果你了解JavaScript或者PHP等,那么你一定对eval()所有了解。如果你并没有接触过也没关系,eva()l函数的使用非常简单。>>> eval("1+1==2") #进行判断True>>> eval("'a'+'b'") #字符连接'ab'>>> eval("4+5") #数字相加9>...原创 2019-11-22 00:16:41 · 15073 阅读 · 0 评论 -
python中的多继承和super
一、其实,“类只是一个结构”,它并不是实例化出来的对象了,只是定义,那么在定义方法的时候想要用到 super 类的方法,你就只能用 super或者用类名来调用它。class Person: def __init__(self, name, age): self.name = name self.age = age def eat(self, fo...原创 2019-11-18 23:24:07 · 11024 阅读 · 0 评论 -
深入探讨 Python 的 import 机制:实现远程导入模块
1.导入系统的基础1.1 导入单元构导入单元有多种,可以是模块、包及变量等。对于这些基础的概念,对于新手还是有必要介绍一下它们的区别。模块:类似 .py,.pyc, .pyd ,.so,*.dll 这样的文件,是 Python 代码载体的最小单元。包 还可以细分为两种:Regular packages:是一个带有 init.py 文件的文件夹,此文件夹下可包含其他子包,或者模块N...转载 2019-11-17 17:54:47 · 10980 阅读 · 0 评论 -
python骚操作总结(不定期更新)
1.合并字典eg:>>> test1={'a':23,'b':56,'e':'s'}>>> test2={'k':45,'p':0}python3:>>> {**test1,**test2}{'a': 23, 'b': 56, 'e': 's', 'k': 45, 'p': 0}python2:>>> te...原创 2019-11-07 23:30:39 · 11189 阅读 · 0 评论 -
Python计数模块Counter
本文主要介绍Python内置的Counter模块,尤其在计算对象的个数非常方便先来看看源码对这个模块的说明class Counter(dict): '''Dict subclass for counting hashable items. Sometimes called a bag or multiset. Elements are stored as diction...转载 2019-11-06 23:59:48 · 12076 阅读 · 0 评论 -
No.4有向无环图的拓扑排序
1.什么是有向无环图(简称DAG)呢?举个浅显易懂的有向无环图拓扑排序的例子(Linux驱动匹配):比如现在有abcde五个驱动模块文件,它们的具体的依赖顺序未知但是给出了单个驱动模块文件会依赖其它的驱动依赖模块1> a->bce,表示a的正常工作会依赖bce这三个驱动模块,但是bce之间的依 赖顺序又是未知的2> b->d,b依赖d3> c-&...原创 2019-10-20 10:02:30 · 11434 阅读 · 0 评论 -
python将字典转化为对象
将字典转化为对象原创 2019-10-16 16:02:59 · 12492 阅读 · 0 评论 -
python中任务级别的线程信息隔离
任务级别的线程信息隔离原创 2019-10-15 18:50:48 · 11063 阅读 · 0 评论 -
python-pep8规范
pep8学习原创 2019-02-15 21:25:39 · 10971 阅读 · 0 评论 -
python中subprocess封装的执行命令行的函数
subprocess封装原创 2019-01-27 20:01:27 · 12089 阅读 · 0 评论 -
django中model参数
django model原创 2019-01-26 11:59:44 · 11700 阅读 · 0 评论 -
python装饰器的简单运用
装饰器原创 2019-01-20 15:16:42 · 11206 阅读 · 0 评论 -
利用python读取磁盘二进制数据获取磁盘分区的起始扇区的LBA以及磁盘分区大小
利用python获取磁盘分区的起始扇区的LBA以及磁盘大小原创 2019-01-24 11:36:59 · 13743 阅读 · 0 评论 -
samba文件共享出来只读遇到的坑
samba遇到的坑原创 2019-01-24 11:27:52 · 15652 阅读 · 0 评论 -
python多重继承的学习
python多重继承的学习原创 2019-02-16 20:43:34 · 11022 阅读 · 0 评论