python
文章平均质量分 66
Rnan-prince
知是行之始,行是知之成(1352638748@qq.com)
展开
-
Python实现普通进度条
在项目开发过程中加载、启动、下载项目难免会用到进度条,如何使用 Python 实现进度条呢?原创 2024-04-21 22:52:38 · 300 阅读 · 0 评论 -
Python-configparser更新write保留注释
python语言用来解析配置文件的模块是ConfigParser,python3中是configparser模块,在使用中经常用到write方法将配置项重新写入文件;结果发现配置文件中的,虽然这个并不影响使用,但配置文件的可读性无疑还是变差了。原创 2024-04-07 23:19:53 · 579 阅读 · 0 评论 -
python-三引号去除缩进
缩进是Python中非常重要的一个概念,它用于表示代码块。代码块指的是在控制流语句(如if、while、for等)中被执行的一组语句。Python要求同一个代码块中的所有语句必须使用相同的缩进。在Python中,三引号用于表示多行字符串或文档注释。三引号内的文本可以包含任何字符,包括换行符和引号。在使用三引号表示多行字符串时,Python会将三引号中的所有内容作为一个字符串处理。当使用三引号表示多行字符串时,三引号内的每一行文本的缩进将会被保留。在上面的例子中,每一行文本的缩进都会被保留。原创 2024-03-09 21:13:46 · 377 阅读 · 0 评论 -
Python-判断字符串为浮点型
Python提供了float()函数来将字符串转换为浮点型。我们可以使用try-except语句来判断字符串是否可以成功转换为浮点型。如果转换成功,说明字符串为浮点型;如果转换失败,则说明字符串不是浮点型。在上述代码中,我们定义了一个is_float函数,该函数接受一个字符串作为输入,尝试将其转换为浮点型。如果转换成功,即不抛出异常,则返回True;如果转换失败,即抛出ValueError异常,则返回False。原创 2024-03-09 21:05:23 · 1417 阅读 · 0 评论 -
Python-import hook机制原理与使用
在 Python 众多特性中,有一个特性隐秘而强大,它就是 Python 的 import hook 机制。利用它,我们可以接管 Python 的模块导入流程,实现非常强大的自定义功能,原创 2024-01-22 00:39:56 · 1605 阅读 · 0 评论 -
Python-利用resource限制资源使用
当我们在运行python程序时,如果希望程序所需要的消耗系统资源不能超过一定的量时,例如CPU利用率不能超过N%。可以使用resource。resource 模块用于测量和控制程序使用的系统资源的基本机制。:需注意在 win 和 mac环境,该模块可能存在问题,建议linux下使用。原创 2024-01-21 22:09:57 · 1568 阅读 · 0 评论 -
Python-setup进阶打包命令
--python setup.py build # 仅编译不安装 --python setup.py install #安装到python安装目录的lib下 --python setup.py sdist #生成压缩包(zip/tar.gz) --python setup.py bdist #生成平台安装包 --python setup.py bdist_wininst #生成NT平台安装包(.exe) --python setup.py bdist_rp原创 2024-01-21 00:27:42 · 2543 阅读 · 0 评论 -
Python-AST语法树
在计算机科学中,AST),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。AST是在处理源代码时所使用的一种中间表示形式,在编译和代码生成过程中起着关键作用。之所以说语法是「抽象」的,是因为这里的语法并不会表示出真实语法中出现的每个细节。AST中的每个节点表示源代码中的一个语法构造,如变量声明、表达式、函数调用、控制结构等。。例如,一个函数声明的AST节点可能包含多个子节点,如函数名、参数列表和函数体等。原创 2024-01-14 00:14:09 · 3288 阅读 · 0 评论 -
Python-在不同对象中使用 in 操作符的查找效率
在Python中in操作符可以用于判断某个元素是否存在于当前对象中,而对于不同的Python对象,使用in操作符的处理效率是不一样的。针对 4 种常见的Python数据类型进行测试:list、tuple、set、dict。原创 2024-01-02 23:48:44 · 527 阅读 · 0 评论 -
Python-位置限定参数
python中有位置参数、关键字参数、默认参数、非固定参数、Python 中已经使用标记提供了,而使用标记来支持的,还可以提高语言的一致性。对于位置或关键字参数,并不一定要限制将其混合使用。接下来逐一介绍。。。原创 2024-01-02 23:20:10 · 503 阅读 · 0 评论 -
Python-单行赋值的执行顺序
其实并不相悖,其实左边的赋值也是有顺序的,右边的值计算完成后,为(1, 2),赋给左边时候,先赋值i=1,然后再执行x[i]=2,即x[1]=2,就出现了如上的结果。Python-再并行赋值时候,会先顺序执行等号右边的表达式,再依次将值赋给左边的变量,上例中,先将右边变量打包成元组,即(2, 1),然后按照。结果我们发现下被替换的值不是i=0处的值,而是i=1的值,这与我们上面的例子“交换a,b的值”的例子相悖了,为什么呢?,依次将 2 赋值给 a,将 1 赋值给 b。结果是a,b的值交换了顺序。原创 2024-01-02 22:26:38 · 465 阅读 · 0 评论 -
NumPy使用不当引起的内存泄漏
NumPy使用不当引起的内存泄漏原创 2023-09-13 22:55:41 · 1131 阅读 · 0 评论 -
Numba:加速python代码
Numba是一款可以将python函数编译为机器代码的JIT编译器,经过Numba编译的python代码(仅限数组运算),其运行速度可以接近C或FORTRAN语言。普通python语言靠Cython编译的,但是Numba使用Jit编译器可以直接将一个函数转化为机器码。JIT的全称是 Just-in-time,在 numba 里面则特指 Just-in-time compilation(即时编译动态编译(dynamic compilation):指的是“在运行时进行编译”;原创 2023-09-12 08:16:20 · 795 阅读 · 2 评论 -
Python-tracemalloc-跟踪内存分配
tracemalloc 模块是一个用于对 python 已申请的内存块进行debug的工具。它能提供以下信息:定位对象分配内存的位置按统计python的内存块分配情况: 总大小、块的数量以及块平均大小。对比两个内存快照的差异,以便排查内存泄漏。原创 2023-09-10 22:42:31 · 1203 阅读 · 0 评论 -
Python-time.time() 和 time.perf_counter()
返回自纪元以来的秒数作为浮点数,但是时期的具体日期和闰秒的处理取决于使用的平台。比如:在Windows和大多数Unix系统上,纪元是1970年1月1日00:00:00(UTC),并且闰秒不计入自纪元以来的秒数,这也通常被称为Unix时间。我们要可以通过gmtime(0)查看自己平台上的纪元。。虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。通常用time()来做时间的格式输出,也会用在一些测试代码时间上面。在我们测试代码的时候需要调用两次,做差值,原创 2023-09-10 22:23:42 · 671 阅读 · 0 评论 -
Python中raise…from用法
与此同时,在 Python 3.3 中 A异常 的 __suppress_context__ 属性会被设置为 True,这样就抑制了 A异常 的 __context__ 属性,即忽略 __context__ 属性。当在 except 块或者 finally 块中出现异常时(包括使用单独的 raise 重新抛出异常的情况),之前的异常会被附加到新异常的 __context__ 属性上。如果 B 是异常类或者异常实例,那么 B 会被设置为 A 的 __cause__ 属性,表明 A异常 是由 B异常 导致的。转载 2023-03-12 22:21:23 · 719 阅读 · 0 评论 -
Python的使用技巧:any all的短路
【代码】Python的使用技巧:any all的短路。原创 2023-03-12 22:16:36 · 204 阅读 · 0 评论 -
Python使用异步线程池实现异步TCP服务器交互
实现客户端与服务端交互,由于效率原因,要发送与接收异步,提高效率。需要多线程,本文用线程池管理。原创 2023-03-01 22:47:59 · 1162 阅读 · 0 评论 -
Python源码剖析3-列表对象PyListObject
对象可以有效地支持插入,添加,删除等操作,在 Python 的列表中,无一例外地存放的都是 的指针。所以实际上,你可以这样看待 Python 中的列表: 。原创 2022-12-04 19:47:28 · 904 阅读 · 0 评论 -
Python源码剖析2-字符串对象PyStringObject
PyStringObject是变长对象中的不可变对象。当创建了一个PyStringObject对象之后,该对象内部维护的字符串就不能再被改变了。原创 2022-12-04 14:13:32 · 878 阅读 · 0 评论 -
Python源码剖析1-整数对象PyIntObject
PyIntObject是一个不可变(immutable)对象。Python内部也大量的使用整数对象,我们在自己的代码中也会有大量的创建销毁整型对象的操作,因此单独的维护整形对象并对其申请内存和释放内存是不现实的。原创 2022-12-04 14:12:52 · 635 阅读 · 0 评论 -
Python-时间差中seconds和total_seconds的区别
在python中经常会用到计算两个时间差,两个日期类型进行相减可以获取到时间差。经常会使用seconds来获取,其实。原创 2022-09-10 09:38:58 · 615 阅读 · 2 评论 -
python-中断time.sleep一种更优雅的办法:event.wait
中断time.sleep一种更优雅的办法:event.wait原创 2022-09-10 09:27:50 · 4078 阅读 · 3 评论 -
python-通过函数名有选择的执行函数
校验参数时候,会根据不同的参数类型选择不同的策略进行判断,再不定义map的形况下,如何根据类型自动选择相应的函数进行校验,并且可扩展。原创 2022-09-10 07:45:45 · 689 阅读 · 0 评论 -
python 设置linux环境变量
1、临时环境变量linux:export PGPASSWORD = 'postgres'若用python实现,错误的方法:os.system("export PGPASSWORD='postgres'")相当于只是起了一个shell进程,进程内变量可用,进程结束,变量失效。2、全局环境变量os.environ['PGPASSWORD'] = 'postgres'相关用法:import os# 设置环境变量os.environ['WORKON_HOME']="原创 2022-05-13 21:03:34 · 4772 阅读 · 4 评论 -
Python site-packages目录的位置
网站包目录有两种类型,全局目录和每个用户目录。1、运行时会列出全局站点软件包(“dist-packages”)目录sys.path:python -m siteUSER_BASE 和USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径。user_site其实就是个人的site-packages默认安装路径了要在Python代码中getsitepackages从站点模块运行更简洁的列表,请执行以下操作:python -c 'import sit...原创 2022-05-13 20:55:14 · 10992 阅读 · 0 评论 -
Python批量数据处理-下划线与驼峰格式的相互转换
背景:python读取数据(如数据库数据)往往是list形式的,在进行数据处理时(如格式化的kafka、或者json形式),往往会使用如data_dict['xxx']='yyyy'的形式,这样的缺点:1、可扩展性不好 2、硬编码 3、重复性代码多 4、不美观针对以上缺点做了如下工具类:方法:1、定义数据格式类:key的名字与list索引的对应位置2、定义工具类:自动识别数据格式类的变量名称3、动态获取变量key:根据相应的转换规则(驼峰->x下划线 下划线->..原创 2022-04-23 09:31:57 · 3870 阅读 · 0 评论 -
xxx.whl is not a supported wheel on this platform-查看pip支持的安装包版本
我们安装一些python包时候经常遇见如下错误:xxx.whl is not a supported wheel on this platform。出现这个问题,是由于这个whl和系统python版本不匹配导致的。64 pip 20.0及以上版本,老的的查看方法前段时间更新后就不能用了。之前导入pip._internal或者pip._internal.pep425tags就可以。、import pipprint(pip.pep425tags.get_supported())#...原创 2021-12-19 17:32:40 · 2444 阅读 · 0 评论 -
Python进程使用内存后不释放
背景:使用python进行大量的数据操作过程中RSS占用(几个G,Python的GC会频繁地malloc/free),发现RSS内存不释放。排查代码后,没有发现内存泄露的情况,GC也是默认开启的,甚至代码将数据库数据读出来遍历一遍后程序结束,内存一直存在不释放。 使用tracemalloc,objectgraph调试,Python对象的产生和释放并没有啥异常。 Python的对象内存管理是基于引用计数的(refcnt为0直接decref回收),python内存池也没发现大内存驻留,操作系统brk原创 2021-12-05 09:10:37 · 6868 阅读 · 1 评论 -
pyc文件多次运行二进制不一致问题
在产品开发中,为了安全性(虽然也不是很安全),通常会将python代码编译成pyc文件,再随产品发布。这时经常会遇见环境、代码都相同的情况下,多次运行的pyc代码二进制不一致问题。1、首先产看pyc文件的时间戳是否一致以十六进制打开pyc文件(notepad++),第一行的8-11位为时间戳。如何在notepad++中以16进制显示内容_Cloudy_cn的专栏-CSDN博客用计算器换算成十进制的时间戳-:再用在线的时间戳转换工具查看时间:时间戳(Unix timesta..原创 2021-11-20 20:52:27 · 1112 阅读 · 0 评论 -
Python-itertools - 高效的迭代器的函数
itertools模块实现一系列iterator,这些迭代器受到APL,Haskell和SML的启发。为了适用于Python,它们都被重新写过。无穷迭代器: 迭代器 实参 结果 示例 count() start, [step] start, start+step, start+2*step, ... count(10)-->10...原创 2021-11-20 18:52:10 · 683 阅读 · 0 评论 -
遍历python中的对象属性
python开发中有时候需要遍历某对象的属性list:class Person(object): """ 职员信息 """ name = 0 age = 1 id = 2 group = 3attr = [a for a in dir(Person) if not a.startswith('__')]for a in attr: print(a, getattr(Person, a))"""age 1group 3id原创 2021-10-24 09:36:22 · 8188 阅读 · 0 评论 -
Cython为py程序加密&提高性能
在实际的工作中,有时候我们需要部署自己的Python应用,但这时候我们并不希望别人能够看到自己的Python源程序;还有项目需要,需要优化已有的Python代码。Python运行速度慢怎么办?通过使用Cython可以提高性能。Cython还可以用于对Python代码进行加密。cython的原理是:把.py文件编译成.c文件,然后把.c文件编译成.so或.pyd文件,这样文件就很难被破解。优点在于Python代码很难被破解,缺点在于,Cython有时可能不支持一小部分代码,完善起来就比较麻烦了。原创 2021-09-10 21:56:46 · 3526 阅读 · 0 评论 -
tensorflow_hmm使用Session模块时报错:AttributeError: module ‘tensorflow‘ has no attribute ‘Session‘,已解决
tensorflow_hmm:https://pypi.org/project/tensorflow_hmm/当运行https://github.com/dwiel/tensorflow_hmm中的examples时候,tf_s = tf.Session().run(tf_s_graph)出现了如下的错误:错误的意思是tensortflow模块没有Session属性,后来查阅资料发现,tensorflow2.0版本中的确没有Session这个属性:如果安装的是tenso..原创 2021-09-08 21:36:15 · 271 阅读 · 0 评论 -
增量计算海量数据均值、标准差
首先复习一下咱们高中数学均值、标准差怎么算。均值方差有两种计算方法: 根据公式2就可以增量计算了,我们只需要存储平方和、均值就可以了,我们测试一下:import numpy as npdef calculate_var(sum_square, sum_value, n): """ Var(x)=E(x^2)-[E(x)]^2 :param sum_square: Sum of squares :param sum_value: Sum .原创 2021-09-08 00:04:14 · 1977 阅读 · 0 评论 -
sklearn.LabelEncoder出现之前从未见过值
如果将LabelEncoder.transform将训练集转换为编码序列,则在测试集上使用时如果遇到新的值,则可能会报错。'<Unknown>'我们可以继承LabelEncoder并重写fit和transform。 如果您有一个新标签,它将被分配为未知类。from sklearn.preprocessing import LabelEncoder as LEncoderclass LabelEncoder(LEncoder): def fit(self, y):原创 2021-09-05 09:16:28 · 1898 阅读 · 0 评论 -
python-__slots__性能优化
__slots__介绍正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:class Student(object): pass然后,尝试给实例绑定一个属性:>>> s = Student()>>> s.name = 'Jone' # 动态给实例绑定一个属性>>> print(s.name)Jone还可以尝试给实例绑定原创 2021-08-18 01:02:36 · 403 阅读 · 0 评论 -
python生成exe文件
在使用过程中,我们有时候会需要将python程序发给没有安装python环境的用户使用,这时后我们就需要将其代码打包成exe发给对方。安装 PyInstallerPython 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块。安装 PyInstaller 模块与安装其他 Python 模块一样,使用 pip 命令安装即可。在命令行输入如下命令:pip install pyinstaller强烈建议使用 pip 在线安装的方式来安装 PyInst原创 2021-07-21 00:34:06 · 371 阅读 · 0 评论 -
装饰器+inspect的python入参检验
由于 python 不支持函数入参类型的限定,所以,对于 python 来说,入参合法性检测显得尤为重要。def add(a: int, b: int) -> int: return a + bif __name__ == '__main__': print(add(1, "2"))-------------------------------------------------------------Traceback (most recent call last):原创 2021-07-21 00:00:26 · 708 阅读 · 1 评论 -
numpy.where与numpy.random.multinomial用法
umpy.where() 有两种用法:np.where(condition, x, y)满足条件(condition),输出x,不满足输出y np.where(condition)只有条件(condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。1. np.where(condition, x, y)满足条件(con...原创 2021-07-17 18:07:05 · 586 阅读 · 1 评论