Python
文章平均质量分 78
python
uncle_ll
这个作者很懒,什么都没留下…
展开
-
Python项目中的.gitignore配置
python 项目 .gitignore配置文件原创 2024-07-17 19:00:00 · 522 阅读 · 0 评论 -
基于RabbitMQ的异步消息传递:发送与消费
mq消息队列原创 2024-06-27 23:30:00 · 1976 阅读 · 0 评论 -
Python Web Service开发及优化
本文介绍了如何使用Flask、Gunicorn和Nginx构建高性能Python Web服务。Flask提供简洁明了的API和强大的扩展性,Gunicorn支持多进程模式,Nginx作为负载均衡和缓存服务器。这些工具的结合使用可以构建可扩展、高性能的Web应用。缓存和连接池的使用对性能提升至关重要。原创 2024-05-28 23:45:00 · 639 阅读 · 0 评论 -
Python代码规范pep8
Python代码规范pep8原创 2024-03-18 21:14:17 · 1333 阅读 · 0 评论 -
基于Jupyter快速入门Python,Numpy,Scipy,Matplotlib
基于Jupyter快速入门Python,Numpy等包原创 2024-03-08 22:45:00 · 1127 阅读 · 0 评论 -
Python虚拟环境轻松配置:Jupyter Notebook中的内核管理指南
在Python开发中,使用Jupyter Notebook进行服务器端开发是一种常见的实践。为了在Jupyter Notebook中实现更灵活的开发,本文提供了一份详细指南,介绍了如何创建Python虚拟环境以及向Jupyter Notebook添加不同Python版本的内核。通过这一过程,您可以更方便地在Jupyter Notebook中切换和管理不同的Python环境,提高开发的灵活性。阅读本文,了解如何通过简单的步骤为Jupyter Notebook配置Python虚拟环境,优化您的Python开发流原创 2024-01-10 23:00:00 · 2947 阅读 · 0 评论 -
Python程序打包指南:手把手教你一步步完成
Python打包原创 2023-11-18 19:03:37 · 843 阅读 · 0 评论 -
Python项目结构布局
Python项目结构布局原创 2023-11-03 23:30:00 · 387 阅读 · 1 评论 -
C++ 用户学习 Python 的最佳方法
一份Python学习资源整理原创 2023-10-17 23:30:00 · 277 阅读 · 0 评论 -
当涉及到PDF中的数据挖掘,PDFPlumber是您的得力助手
本文介绍如何使用开源Python包PDFPlumber来解决从PDF中提取文本和数字变得更加容易和高效。详细介绍了PDFPlumber的基本用法,包括打开PDF文件、选择页面、提取文本信息,并演示了如何提取数字。通过使用这个强大的工具,数据科学家可以提高工作效率,避免繁琐的手动操作,从而更轻松地处理PDF文件中的信息。原创 2023-10-07 23:00:00 · 573 阅读 · 0 评论 -
watchdog介绍
最近面临一个问题是其他业务提交模型文件,服务Flask接口需要实时的更新到该新的模型文件。有一些常规的解决办法,比如更新git项目,打tag,jenkins自动重新拉取并build。这种可能需要业务方懂得Git的使用且需要给予他比较高的开发权限,操作不当可能引起线上事故,这里用另外的方式去解决。因此可以使用其他的监测包。watchdog 是一个实时监控库,其原理是通过操作系统的时间触发,需要循环等待。总的来说,这个库还是比较方便的,不用自己去写shell脚本去定时监控文件是否发生了改变。原创 2022-11-09 23:45:00 · 603 阅读 · 0 评论 -
Gradio实现算法可视化
Gradio是一个用于快速构建机器学习模型演示和接口的Python包,通过几行代码就可以创建一个基于文本、图像、音频等输入输出的交互式界面。Gradio可以用于展示机器学习模型的推理结果,也可以用于构建自己的交互式应用程序。使用Gradio可以省略开发接口服务及前端演示界面等繁琐工作,同时还可以生成可分享的链接,方便他人体验应用程序。原创 2022-10-28 23:45:00 · 4011 阅读 · 4 评论 -
Infomap Python API
是一种基于层距离编码的无监督社区发现算法,为了区分随机游走从一个群组进入到了另一个群组,除了群组的名字之外,对于每个群组的跳出动作也给予了一个编码。比如,下图(c)中红色节点部分是一个群组,群组名的编码是 111,跳出编码是 0001。这样在描述某个群组内部的一段随机游走路径的时候,总是以群组名的编码开头,以跳出编码结束。从上述结果可以看到,找到了两个社区1和2,社区1中有节点3,4,5, 社区2中有节点0,1,2。可以使用 PyPI 安装 Infomap。详细原理具体可以参考文末的参考文献列表。原创 2022-10-19 23:30:00 · 1067 阅读 · 0 评论 -
Python-计算两点经纬度之间的距离
半正矢公式是一种根据两点的经度和纬度来确定大圆上两点之间距离的计算方法,在导航有着重要地位。大圆距离指的是从球面的一点A出发到达球面上另一点B,所经过的最短路径的长度。测地线距离定义为空间中两点的局域最短路径, 但是是沿着曲面进行计算的,与任何两个给定位置之间的最短曲线不相同。是Python的包,用于计算两个地理位置的距离,它使开发人员更容易使用第三方地理编码器以及其他数据源来检索各个位置的坐标。大圆距离将两个点分为两个弧,任何两个位置之间的较短弧等于大圆距离。给定两个点的经纬度,计算两个点的经纬度距离。原创 2022-09-04 17:15:00 · 6673 阅读 · 4 评论 -
python获取本机IP
同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层。写接口服务中需要知道本机服务器的ip, 之前有写一版,在生产机上是能够正常得到ip的,到测试环境的时候就出问题了,得到的结果是。当操作系统初始化本机的TCP/IP协议栈时,设置协议栈本身的IP地址为127.0.0.1(保留地址),并注入路由表。localhost首先是一个域名,也是本机地址,它可以被配置为任意的IP地址。127.0.0.1是保留地址之一,来检验本机TCP/IP协议栈,IPv6:表示 [::1]...原创 2022-08-18 23:30:00 · 5890 阅读 · 0 评论 -
Python——LRU_Cache
一个为函数提供缓存功能的装饰器,缓存 maxsize 组传入参数,在下次以相同参数调用时直接返回上一次的结果。不同模式的参数可能被视为不同从而产生多个缓存项,例如, f(a=1, b=2) 和 f(b=2, a=1) 因其参数顺序不同,可能会被缓存两次。因此,用它缓存具有副作用的函数、需要在每次调用时创建不同、易变的对象的函数或者诸如time或random之类的不纯函数是没有意义的。由于使用了字典存储缓存,所以该函数的固定参数和关键字参数必须是可哈希的。原始的未经装饰的函数可以通过。...原创 2022-08-07 16:18:47 · 436 阅读 · 0 评论 -
Python获取浮点数后小数位的个数
初步想法是将其转化为字符串之后再进行字符串处理。此次numpy版本为1.19,如果出错的话可以看看是不是版本问题,1.14及以上应该是没问题的。在能将浮点数准确转化为浮点数后,基于字符串处理是非常容易获得后面的小数位置的,这里不做过多介绍。包进行处理即可,今天这个需求有点懵,搜索相关资料,在不改变小数位的情况下,可以有两种解决方案。这样就不能直接进行表示了,一般处理小数的位数问题基本上都是自己控制位数,通过。不在字符串中,不做处理直接返回。先将浮点数转成字符串类型。在字符串中,进行后续处理。...原创 2022-07-20 23:00:00 · 3640 阅读 · 0 评论 -
OpenCV:将视频转化为连续的图像帧
处理视频文件,需要将视频变成连续的图片之后再进行处理,可以利用OpenCV实现这一需求,,设置好时间间隔后,每到该时间段就保存一张图片。原创 2022-07-15 23:30:00 · 1106 阅读 · 0 评论 -
Python基础进阶:从函数到高级魔法方法
Python入门(下)简介函数1. 函数的定义2. 函数的调用3. 函数文档4. 函数参数5. 函数的返回值6. 变量作用域Lambda-表达式1. 匿名函数的定义2. 匿名函数的应用类与对象1. 属性和方法组成对象2. self是什么?3. Python的魔法方法4. 公有和私有5. 继承6. 组合7. 类、类对象和实例对象8. 什么是绑定?9. 一些相关的内置函数(BIF)魔法方法1. 基本的魔法方法2. 算术运算符3. 反算术运算符原创 2022-03-31 01:00:00 · 851 阅读 · 0 评论 -
Python基础练习:数据结构汇总
Python入门(中)简介本节主要介绍python的一些数据结构,比如列表,字符串,元组,字典,集合等;本 Python 入门系列是基于阿里云学习资源https://tianchi.aliyun.com/specials/promotion/aicamppython列表1. 列表的定义2. 列表的创建3. 向列表中添加元素4. 删除列表中的元素5. 获取列表中的元素6. 列表的常用操作符7. 列表的其它方法元组1. 创建和访问一个元组2. 更新和删除一个元组3原创 2022-03-28 22:34:30 · 1273 阅读 · 0 评论 -
Python基础入门:从变量到异常处理
Python入门(上)简介变量、运算符与数据类型1. 注释2. 运算符3. 变量和赋值4. 数据类型与转换5. print()函数位运算1. 原码、反码和补码2. 按位运算3. 利用位运算实现快速计算4. 利用位运算实现整数集合条件语句1. if 语句2. if - else 语句3. if - elif - else 语句4. assert 关键词循环语句1. while 循环2. while - else 循环3. for 循环4. for原创 2022-03-26 17:04:18 · 778 阅读 · 0 评论 -
faiss-9: index进阶操作
下面介绍的方法只支持部分index类型从index中恢复出原始数据给定id,可以使用reconstruct或者reconstruct_n方法从index中回复出原始向量。支持下述几类index:IndexFlatIndexIVFFlat(需要与make_direct_map结合)IndexIVFPQIndexPreTransformimport sysimport numpy as np import faiss# 生成数据d = 16n_data = 500data = n原创 2022-02-10 21:00:00 · 2164 阅读 · 0 评论 -
faiss-8: 多种index混合
index可以合成使用数据准备import faissimport numpy as np d = 512 # 维数n_data = 2000 np.random.seed(0) data = []mu = 3sigma = 0.1for i in range(n_data): data.append(np.random.normal(mu, sigma, d))data = np.array(data).astype('float32')# qu原创 2022-02-09 22:30:00 · 1014 阅读 · 0 评论 -
faiss-7: 基础索引类型
数据准备import faissimport numpy as np d = 512 # 维数# 向量集合n_data = 2000 np.random.seed(0) data = []mu = 3sigma = 0.1for i in range(n_data): data.append(np.random.normal(mu, sigma, d))data = np.array(data).astype('float32')# query 向原创 2022-02-09 22:00:00 · 819 阅读 · 0 评论 -
faiss-2: 快速入门
数据准备faiss可以处理固定维度d的向量集合,该集合用二维数组表示。 一般来说,需要两个数组:data:包含被索引的所有向量元素;query:索引向量,需要根据索引向量的值返回与向量集中的最近邻元素;为了对比不同索引方式的差别,在下面的例子中统一使用完全相同的数据,即维数d为512,data包含2000个向量,每个向量符合正态分布。注意faiss需要向量数组中的元素都是32位浮点数格式, datatype = 'float32'制作向量集合数据import numpy as原创 2022-02-07 21:00:00 · 2711 阅读 · 0 评论 -
faiss-1: 安装
faiss安装git项目的安装教程:https://github.com/facebookresearch/faiss/blob/main/INSTALL.md使用Anaconda安装使用Anaconda安装使用faiss是最方便快速的方式,facebook会及时推出faiss的新版本conda安装包,在conda安装时会自行安装所需的libgcc, mkl, numpy模块。faiss的cpu版本目前仅支持Linux和MacOS以及Windows操作系统,gpu版本提供可在Linux操作系统原创 2022-01-14 23:00:00 · 3411 阅读 · 0 评论 -
numpy格式转化成list后小数位发生变化
问题在使用numpy中,有一个需求是想将float32数据的小数截取一下,以减少所占内存,节省空间以及减少后续的计算时间。numpy中有一些函数是可以定义精度的:np.around(): 四舍五入,可指定精度np.floor():向下取整数np.ceil():向上取整数按照上述的需求,应该采用np.around()np.around(a, decimals=0, out=None)a:是输入的numpy数组decimals是要保持的小数位数。默认值为0,如果为负,整数将四舍五入到小原创 2022-01-11 19:11:01 · 3328 阅读 · 1 评论 -
RuntimeError: OrderedDict mutated during iteration
问题项目中对搜索结果进行过滤使用了OrderedDict ,有一个规则是要将其中的一些元素进行删除,在使用下面代码的时候报上述错误, 编程语言py3.7from collections import OrderDictsearch_res = OrderedDict([("k1", "v1"), ("k2", "v2"), ("k3", "v3")])for k, v in search_res.items(): if k == 'k2': # 假设规则是删除k2 del search_r原创 2021-10-27 14:32:21 · 2925 阅读 · 0 评论 -
python pip安装镜像源
问题默认情况下 pip 使用的是国外的镜像,在下载的时候速度非常慢,下载速度是几kb或者几十kb,花费的时间比较长。解决办法国内目前有些机构或者公司整理了对应的镜像源,使得通过内网就能访问即可,下载速度达到几百kb或者几M,速度对比而言简直一个天上,一个地下。下面以国内清华大学镜像源为例,展示如何使用国内镜像源进行pip包的安装。清华大学开源软件镜像源地址为:https://mirrors.tuna.tsinghua.edu.cn可以看到,清华大学整理了非常多软件包的镜像源:我们需要找原创 2021-07-14 19:07:32 · 15842 阅读 · 0 评论 -
opencv与matplot显示图片通道区别
问题对于一张lena图,有时候显示是原始的样子:但有时候显示是问题是通道数顺序;对于彩色图片,一般而言是由RGB三通道组成,不同的是通道顺序的问题导致显示的颜色问题,比如RGB BGR等;解决这里明确一下使用cv2.imread读取图像时候,获得的图像顺序是BGR顺序使用cv2.imshow显示图像时候,要求图像顺序是BGR顺序使用plt.imshow 显示图像时候,要求图像顺序是RGB顺序BGR与RGB的互换,可以使用cv2.cvtColor进行转换:# bgr to rgb原创 2021-04-27 23:10:12 · 1019 阅读 · 4 评论 -
python性能测试
性能测试编写程序完毕后,一般需要考虑下其时间复杂度和空间复杂度。随着内存的增大以及服务器计算能力的提升,大多数情况是不会遇到时间不满足要求,空间不满足要求的问题,而对于某些特殊场景下就需要考虑程序运行耗费时间,比如服务接口时候需要考虑请求响应速度,对于移动设备而言,要考虑内存空间大小。在python中,也提供了一些性能测试的标准库。timeittimeit,用于测量少量代码片段的执行时间。基本算法思路是执行较多的次数,从中选取最小平均值。将代码循环执行多次(number, -n),以便有足够长的统原创 2021-03-06 20:24:00 · 3882 阅读 · 0 评论 -
python 类 子类 初始化 super
类的初始化方法在写python代码时候,总能看到初始化__init__的定义,但其实初始化方法__init__是可选。class A: def __init__(self, x): self.x = x可以看到类A具有的属性有属性变量xa = A(4)a.x # 输出4子类但初始化方法如果子类没有新的构造参数,或者新的初始化逻辑,那么没有必要创建初始化__init__方法。因为按照搜索顺序,解释器会找到基类的初始化方法并执行。基于此,我们需要在子类的初始化方法中显式调用基类方法原创 2021-02-27 13:32:05 · 2284 阅读 · 0 评论 -
Amazon S3下载图片
Amazon S3Amazon S3,全名为亚马逊简易存储服务。类似于阿里云的oss,或百度云等网盘服务。即将文件存储在云端服务器中,文件会有对应的url。一般用于大型公司或者跨国业务。官网(https://aws.amazon.com/cn/s3/)介绍如下:Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。这意味着各种规模和行业的客户都可以使用 S3 来存储并保护各种用例(如数据湖、网站、移动原创 2020-11-10 19:12:04 · 1145 阅读 · 0 评论 -
Pymysql 连接池操作
https://www.coder.work/article/500786https://blog.51cto.com/lookingdream/2449109https://www.jianshu.com/p/53262bb292e5https://blog.csdn.net/jacke121/article/details/79852146https://blog.csdn.net/u010939285/article/details/71088145https://www.letianbij原创 2020-10-25 23:16:57 · 1173 阅读 · 0 评论 -
算法统一图片输入格式RGB/BGR
统一图片输入格式问题在做一些图像处理项目时候,有些模型对输入图片格式有一定的要求,不一致的图片格式输入进去可能会造成一些错误情况出现;统一输入图片读取后的格式是非常有必要的;在opencv中,使用cv2.imread读取jpg类型图片,得到的图像矩阵形式是bgr格式; 对于png类型图片,得到的图像矩阵形式是RBG格式;如果算法处理的图片既有jpg又有png,那么很有必要在算法入口处对两种图片得到的图像矩阵格式进行统一方法假设这里算法需要的是rgb类型格式的图片矩阵, 传入的是本地图片的名称img原创 2020-10-10 18:10:12 · 1684 阅读 · 0 评论 -
python包:urllib——使用urllib下载无限制链接图片
背景需要将无限制链接转换为本地图片进行后续处理,这里需要用到python的urllib包,该包收集了多个涉及 URL 的模块的包:urllib.request 打开和读取 URLurllib.error 包含 urllib.request 抛出的异常urllib.parse 用于解析 URLurllib.robotparser 用于解析 robots.txt 文件这里需要用到urllib.request包进行打开和读取图片链接urlurllib.request详细介绍可以原创 2020-09-24 00:13:24 · 492 阅读 · 0 评论 -
Python从入门到熟练(7):函数
函数本节主要讲函数。函数也可以看作是一种方法,能够去实现某种想法,比如加法等操作就是一种函数,只不过在背后被封装起来了。函数是编程中一个重要的方法,掌握函数,就可以以编程的方式实现自己脑海中的想法。1 函数的基本使用函数:把具有独立功能的代码块打包为一个小模块,在需要的时候调用函数的使用包含两个步骤:定义函数——封装独立的功能调用函数——享受封装的成果作用:在开发程序时,使用函数可以提高工作效率以及代码的重用Python中提供了非常多的内置函数:print()、in原创 2020-09-19 10:10:54 · 141 阅读 · 0 评论 -
使用demjson解决json解析不规范格式json串JSONDecodeError错误
Json在编程中是一种轻量级的文件格式,在本地开发或者web开发中使用较多。参考维基百科介绍如下:JSON(JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是一种由道格拉斯·克罗克福特构想和设计、轻量级的资料交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON 数据格式与语言无原创 2020-09-16 22:29:20 · 7357 阅读 · 0 评论 -
Python从入门到熟练(6):流程控制
流程控制对于编程而言,其实严格来说就是将一套逻辑用程序语言编写出来,让其自动实现这套逻辑。那么在逻辑中,有各种各样的条件,以及条件对应下的实现,这就是流程控制。在程序中,一般是通过运算符, if 条件语句, while循环语句,for循环语句等方式控制流程。1. 运算符注意:is与==区别 :is用于判断两个变量引用对象是否为同一个(同一块内存空间)==用于判断引用变量的值是否相等内存空间可以用id来获取(id(a))逻辑运算符在程序开发中,有时候需要同时判断多个条件逻辑运算原创 2020-09-14 23:47:42 · 190 阅读 · 0 评论 -
Python从入门到熟练(5): 数据类型进阶
在python中,数据类型主要由以下几类组成:列表(list): [a, b]元组(tuple):(a, b, )集合(set): {a, b}字典(Dictonary): {a: ‘aaa’, b: ‘bbb’}1. 列表列表(List)列表是Python中使用最频繁的数据类型,专门用于存储一串信息列表是一种有序和可更改的集合。允许重复的元素列表使用[]定义,元素之间使用,分隔。例:[1,2, ...]列表的索引从位置0开始索引就是元素在列表中的位置编号,索原创 2020-09-13 17:42:14 · 253 阅读 · 0 评论