python
碧落&凡尘
欢迎大家一起交流探讨!
展开
-
python安全eval执行一般计算
增加了对小于、大于、等于、不等于、且、或、非等判断的支持。2023/1/3更新。原创 2022-12-30 11:55:25 · 287 阅读 · 0 评论 -
python的隐式浅拷贝
python对列表进行切片时是对列表进行了复制的, 那是属于深复制还是浅复制呢?由demo中的代码可以得出,python在进行列表切片时是对列表进行了浅复制。原创 2022-12-07 15:28:47 · 181 阅读 · 0 评论 -
堆排序详解
堆排序其实就是利用二叉树进行排序, 只是它不用去显式构建一颗真正的树而已。原创 2022-11-24 16:03:28 · 161 阅读 · 0 评论 -
centos7中supervisor+django高版本部署sqlite3问题
升级教程后最重要的部分是配置sqlite3的LD_LIBRARY_PATH, 配置好之后可以从cmd中获取sqlite3的版本缺失为高版本的, 而在cmd中启动django也可以正常运行, 但是利用supervisor进行部署的时候, 会发现报错sqlite3版本好像又回到了旧版本。默认centos7的版本是3.7, 而django版本自2.x开始后就要求升级sqlite3为3.8+或者3.9+, 此时有几种解决办法。2. 升级sqlite3。1. 降级django。原创 2022-11-08 15:02:17 · 582 阅读 · 0 评论 -
python怎么比较优雅地停止线程
在之前停止线程有几种方式, 要么在内部的循环里加信号监听, 或者开子进程, 调用进程的停止方法去停止专门为了线程开的进程, 但是前者如果逻辑比较复杂, 循环中各部分可能都有不同的逻辑再跑, 可能信号监听会有错漏, 而后者, 进程本身就是一种资源消耗, 在开发板中, 多开几个进程, 也就资源耗尽了。同时附加一个blinker的信号通知, 可以在子线程中触发调用主线程中方法, 这样可以更方便的使用异步方式解耦主子线程中的逻辑。原创 2022-10-28 18:48:09 · 2121 阅读 · 0 评论 -
如何把代码上传到后建立的git仓库
【代码】如何把代码上传到后建立的git仓库。原创 2022-08-19 16:44:09 · 148 阅读 · 0 评论 -
django在非debug下不通过nginx访问静态文件
django在debug模式下,会基于静态文件生成对应的路由,默认会加到路由表内,但是非debug模式下不会自动添加,因为正式生产环境一般都是通过nginx+uwsgi或者其它方式去部署,静态文件通常是通过其他手段去映射路由,故默认非debug模式下不生成响应路由。1.settings.py里面加上如下配置。2.urls.py内加入如下配置。其他部分正常操作即可。...原创 2022-07-21 14:11:51 · 655 阅读 · 0 评论 -
PyQT5低分辨率下拉窗口边框缩放窗口消失
PyQt5低分辨率下缩放窗口注意事项原创 2022-06-15 12:06:29 · 364 阅读 · 0 评论 -
PyQt5框架BUG
如图所示TreeWidget, 添加了事件监听itemSelectionChanged, 当点击port行不松开鼠标, 鼠标挪动到items后, 触发的是port行的事件, 光标却是停留在items, 然后再点击items时, 不会触发新的事件原创 2022-04-02 10:57:07 · 293 阅读 · 0 评论 -
使用Cython打包成pyd文件
源代码如下所示,```setup.py```import sysarg_list = sys.argvf_name = arg_list[1]sys.argv.pop(1)from distutils.core import setupfrom Cython.Build import cythonizeprint(sys.argv, f_name)setup(ext_modules=cythonize(f_name))```su_main.py```import osi原创 2022-01-18 18:16:34 · 1091 阅读 · 0 评论 -
如果你不知道自己在干嘛,就不要去优化自己的if-else
a = 0b = 0c = 2d = 0e = 4if a: if b: print(1)elif c: if d: print(2)else: if e: print(3)if a and b: print(1)elif c and d: print(2)elif e: print(3)上面是代码, 两个if-else语句, 后者是前者的“优化”, 主要觉得上面写的太过繁冗, 可能.原创 2021-08-26 09:30:48 · 75 阅读 · 0 评论 -
Python之Print引发的血案
众所周知, 在写项目中最好不要用print作为日志调试手段, 但是基本上接触这行都是从打印Hello World开始的, 所以用print写Demo算是家常便饭, 所以秉着不作不死的精神, 在写新项目Demo的时候, 就做了这么一个死, 然后就出现了一个修了半天都找到问题在哪的BUG。首先, 我发誓是编译器先动手的!事情是这样的, 我只是写了一个简单的demo, 功能么, 就是在主进程里利用一个二级子进程去启动一个Flask的后台, 然后当主进程退出后, Flask的进程必须要在, 这样去实现通过.原创 2021-07-28 16:42:38 · 182 阅读 · 0 评论 -
实时域和非实时域
操作系统按实时性可分为两种, 一种为实时性操作系统, 一种为分实性操作系统。实时性操作系统: 接收到事件后, CPU会优先响应高优先级事务, 执行完高优先级事务后, 再返回执行之前的事件。分实性操作系统: 接收到事件后, 会先将事件推入到队列中, 然后根据优先级进行排序, 再根据优先级高低对任务进行切片, 之后根据CPU分配策略, 对事件任务进行切片, 之后才是CPU切换运行各事件。实时域和非实时域分离, 即为两种操作方式的分离, 如一些因为网络, 或者其他原因干预会导致的延时性操作, 一般放在原创 2021-07-07 10:37:07 · 360 阅读 · 0 评论 -
python3下OpenOPC连接OPCServer
工具依赖:1. OPCClient.exe2. Simple OPC Server Simulator3. Python3.x4. python包pywin32(pythoncom), win32com5. automation wrapper,http://gray-box.net/download_daawrapper.php?lang=en执行步骤:1. 分别安装上面1-4各软件和依赖包2. 注册wrapper的dll文件, 注册方法https://blog.csdn.原创 2021-04-15 17:07:34 · 2243 阅读 · 1 评论 -
OPC UA带证书测试
服务端代码, 来自官方import sysimport timesys.path.insert(0, "..")from opcua import ua, Serverif __name__ == "__main__": # setup our server server = Server() server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/") server.set_secu原创 2021-04-15 10:10:16 · 3713 阅读 · 2 评论 -
python连接opcua的两种测试
自写脚本测试服务端代码如下:import syssys.path.insert(0, "..")import timefrom opcua import ua, Serverif __name__ == "__main__": # setup our server server = Server() server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/") # setup ou原创 2021-04-14 14:06:57 · 4780 阅读 · 12 评论 -
windows安装cryptography或者pycrypto异常解决办法
安装pycrypto方法:1. 安装vsc++套件2. 找到vs路径, $path\VC3. 进入Auxiliary\Build, 执行命令行, vcvarsall amd64, 然后设置环境变量, set CL=-FI"$path\VC\Tools\MSVC\14.15.26726\include\stdint.h"执行pip安装pip install pycrypto...原创 2021-04-14 10:34:47 · 529 阅读 · 0 评论 -
python中queue.Queue之task_done的理解
from threading import Threadimport timefrom queue import Queueq = Queue()def run(): while True: msg = q.get() print(msg) time.sleep(1) q.task_done()for i in range(10): q.put(5-i)for i in range(3): t = T.原创 2021-01-08 16:48:57 · 6882 阅读 · 1 评论 -
Win10下Python3+PyQt5如何使用QtDesigner
1. 首先安装好python3, 我使用的是python3.72. 执行cmd `py -3.7 -m pip install pyqt5`3. 执行cmd `pyuic5`,如果显示 `Error: one input ui-file must be specified`, 说明安装成功4. 安装pyqt5, 执行cmd `py -3.7 -m pip install pyqt5 pyqt5-tools`5. 找到python3位置, 将python3的位置下的Scripts加入到环境变量原创 2021-01-05 14:10:59 · 400 阅读 · 1 评论 -
Python之实例懒加载实现
class LazyProxy: def __init__(self, cls, *args, **kwargs): print("INIT PROXY") self.__dict__['_cls'] = cls self.__dict__['_params'] = args self.__dict__['_kwargs'] = kwargs self.__dict__['_obj'] = None def .原创 2020-12-18 18:11:31 · 1111 阅读 · 4 评论 -
python线程crash后的重运行
之前在写一些业务逻辑的时候, 总会碰到一些很诡异的bug, 比如说, 我们的服务可能要同时做那么几件事情, 当然大家现在都流行微服务了, 会把不同的事件抽取成为服务, 可惜我们没有, 那么有时因为服务器网络故障, 所以你的客户端请求服务端的时候crash了, 而你可能整个流程都是在一个线程里面的, 且这个流程都是围绕着客户端和服务端来展开的, 所以之前采取的方法就是抽取出来一个方法, 在外面加上一个while - try - except - else - break, 但是这么写就有点不大好用, 而且传说原创 2020-10-20 19:58:15 · 504 阅读 · 0 评论 -
python中for - else中的else存在的必要性
for i in range(3): if i == 1: break print(i)else: print("else")for i in range(3): if i > 0: continue print(i)else: print("else")首先请参见上一份代码, 先猜猜结果是啥, 如果认为一样的, 说明这篇博客还是有写的必要的, 如果认为不一样的, 说明你基础很牢固。答案如下:00.原创 2020-10-16 15:44:08 · 390 阅读 · 0 评论 -
反向传播算法numpy运算用例
# 图表绘图库import matplotlib.pyplot as plt# 数据计算库import numpy as np# 视图可视化库, 基于matplotlibimport seaborn as sns# 色彩图库from matplotlib import cm# 获取数据集的方法from sklearn.datasets import make_moons# 分离训练和测试集方法from sklearn.model_selection import train_test.原创 2020-09-20 01:32:02 · 380 阅读 · 0 评论 -
机器学习----05
案例: 事件预测加载event.txt, 预测某个时间段是否会出现特殊时间.import numpy as npimport sklearn.preprocessing as spfrom sklearn import svmimport sklearn.model_selection as msclass DigitEncoder (): def fit_transf...原创 2019-04-16 10:42:35 · 192 阅读 · 0 评论 -
Python两种装饰器的写法
python中有装饰器一说, 普遍的装饰器是修饰函数的, 长这样:def fn(f): def func(): print('pre do any') f() print('after do any') return func@fndef doAny(): print('do any')# doAny = fn...原创 2019-04-09 11:05:02 · 447 阅读 · 0 评论 -
个人总结----Vue的基本使用
1.为什么要用Vue?对于我们常规学python的话, 可能接触到的后端框架就是django和flask,可能还有个tornado(没接触过), 对于以上两个框架来说都是讲后端和前端模板杂糅到一起了, 如果你要单纯写前端模板的话, 你需要和后端沟通, 需要预留哪些坑, 而一旦需求变更了, 你可能前后端都得改动, 虽然大部分人强调模板应该交由前端写, 但实际上大部分都是后端完成了, 然后维护的时...原创 2019-03-29 09:55:36 · 219 阅读 · 0 评论 -
django跨域访问的临时处理
我们项目使用的时nginx+redis等一系列的配置, 前后端分离, drf和vue框架, 当时本地测试的时候是出现了端口跨域, Vue端口是8080, django端口是8000,网上搜了下答案, 几乎都是让Vue该proxy的, 几经尝试最后求救于大佬。现处理方式如下:1. ALLOWED_HOSTS = ['*']2. pip3 installdjango-cors-headers...原创 2019-03-29 08:56:21 · 137 阅读 · 0 评论 -
Drf框架的各种View以及ViewSet的继承关系
最近在频繁使用DjangoRestFramework, 发现里面前辈留下的代码各种写法都有。例如针对视图层, 有继承自APIView, 有继承自ViewSet的, 也有继承自GenericViewSet的,甚至还有继承ReadOnlyViewSet的,一点都不明白为什么要整得这么复杂, 整个人都看晕了。从视图层角度来说, Django是有自己的视图view的, 但是比较原始, 不支持d...原创 2019-04-10 11:49:28 · 997 阅读 · 0 评论 -
Flask中route装饰器的使用
在Flask构建的项目中我们通常会有如下代码:@api.route('/register', methods=['POST'])def create_client(): form = ClientForm().validate_for_api() promise = { ClientTypeEnum.USER_EMAIL: __register_user_b...原创 2019-03-08 19:39:13 · 3870 阅读 · 1 评论 -
机器学习----02
线性回归线性回归的本质为针对符合线性模型的一组数据, 可以找到一个线性方程拟合样本数据. 从而给出自变量后, 通过线性方程实现预测输出的目的.输入 输出0.5 5.00.6 5.50.8 6.01.1 6.81.4 7.0...y = kx + b预测函数: y = w0 + w1x...原创 2019-04-13 09:36:14 · 194 阅读 · 0 评论 -
机器学习----03
集合算法正向激励首先为样本矩阵中每行样本随机分配初始权重, 由此构建一棵带有权重的决策树. 在使用该决策树提供预测输出时, 通过加权平均或加权投票的方式产生预测值. 将训练样本代入模型, 预测输出, 对那些预测失败的样本, 提高其权重, 由此形成第二棵树. 重复以上过程, 构建出不同权重的n棵树.正向激励相关API:import sklearn.tree as stimport skle...原创 2019-04-13 09:43:30 · 220 阅读 · 0 评论 -
机器学习----Day07
语音识别通过傅里叶变换, 将时域的声音函数分解为一系列不同频率的正弦函数的叠加, 通过频率谱线的特殊分布, 建立音频内容和文本的对应关系, 以此作为模型训练的基础.案例: freq.wavimport numpy as npimport numpy.fft as nfimport scipy.io.wavfile as wfimport matplotlib.pyplot as mp...原创 2019-04-26 16:27:36 · 197 阅读 · 0 评论 -
机器学习----04
朴素贝叶斯分类分类报告sklearn.metrics提供了分类报告相关API, 不仅可以得到混淆矩阵, 还可以得到交叉验证的查准率, 召回率, f1得分的结果. 这样可以方便的分析出那些样本是异常样本.import sklearn.metrics as sm# 获取分类报告cr = sm.classification_report(实际输出, 预测输出)print(cr)决策树分类...原创 2019-04-15 08:54:30 · 158 阅读 · 0 评论 -
机器学习Day06
自然语言处理(NLP)Siri: 1. 听 2. 懂 3. 思考 4. 组织语言 5.回答语音识别自然语言处理-语义分析逻辑分析 - 综合业务场景上下文自然语言处理 - 分析结果生成自然语言文本语音合成自然语言处理的常用处理过程:先针对训练文本进行分词处理(词干处理, 原型提取), 统计词频 - 逆文档频率算法获得该词对某种语义的贡献, 根据每个词的贡献力度, 构建有监督类学习...原创 2019-04-17 19:38:43 · 147 阅读 · 0 评论 -
Gitlab执行pull拉取分支: remote: error: Out of memory, malloc failed
因为git默认拉取是有包限制大小的,设置以下就OK了!git config --global pack.windowMemory 1024m1024m是文件大小, 如果不足可以适当扩大, 但是这只是指标不治本。更好的方法可以参见他山之玉git config --global core.compression 0git clone --depth 1 项目地址...原创 2019-04-23 10:15:25 · 1312 阅读 · 0 评论 -
DRF框架的过滤器功能
今天第一个用drf框架写了个简陋的后台, 算是首次尝试前后台分离开发, 接口调试基本完成。 通过这个应用的编写, 慢慢的也认识到了DRF框架的强大, 比如今天又学会了关于过滤的新姿势! 话说之前写过滤一致是这样子的, 比如def get_object(self): return Book.objects.filter(author__pk=1)是...原创 2019-05-15 20:32:14 · 3170 阅读 · 0 评论 -
numpy中axis的理解
axis主要是针对数组的维度来说的, axis=n,即在n维上进行操作, 比如一个3维数组求和时,axis=0,即对第一维求和,例子如下:arr = np.array( [ [ [ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7] ], [ [ 8, 9], [10, 1...原创 2019-07-15 02:19:51 · 238 阅读 · 0 评论 -
JS逆向:狐妖小红娘漫画扒取
url:http://www.chuixue.net/manhua/12533/工具: Pycharm, Chrome, node.js最近在学python, 接触了点爬虫的相关知识, 学以致用, 所以随手找了本漫画《狐妖小红娘》来练手。本来以为漫画网站都挺简单的,因为都是小网站, 应该不会有什么反爬机制。然而...误区一: 小网站可能直接利用的别人的网站架构, 里面可能也有反爬的坑...原创 2019-03-05 10:55:48 · 1918 阅读 · 0 评论