![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python后端
阿_牛
这个作者很懒,什么都没留下…
展开
-
正则必须包含某几个词不要求顺序python
【代码】正则必须包含某几个词不要求顺序python。原创 2022-12-28 10:24:33 · 681 阅读 · 0 评论 -
java中jasypt包的PBEWithMD5AndDES加解密算法(可java & python双向加解密)
java中jasypt包的PBEWithMD5AndDES加解密算法(可java & python双向加解密)原创 2022-12-24 23:06:42 · 1536 阅读 · 0 评论 -
python 复现java中jasypt包的 PBEWITHSHA256AND256BITAES-CBC-BC加解密算法(可java & python双向加解密)
依赖包Crypto的安装: pip3 install pycryptodome。运行环境:python 3.6。原创 2022-12-24 22:03:36 · 621 阅读 · 0 评论 -
virtualenv简单3步创建python虚拟环境
简单几步完成虚拟环境创建1.进入你的python安装目录的bin目录,这个目录下需要能用python命令激活你的python(建议直接安装miniconda)cd /mypython3/bin2.安装virtualenv包pip install virtualenv# 或者使用 pip3# pip3 install virtualenv3.创建自己的python环境(-p 后面是母python的目录)./virtualenv -p /mypython3/bin/python3 myenv原创 2022-05-09 10:24:14 · 1462 阅读 · 0 评论 -
virtualenv 创建虚拟环境
主要用于在一台电脑上需要安装不同版本的python虚拟环境来做项目, virtualenv就是用来为一个项目创建一套可以隔离的Python运行环境。 1 2 3 4 pip install virtualenv # 或者使用 pip3 pip3 install virtualenv 创建过程 创建目录 Windows系统的话, 新建一个空的文件目录, linux的话 mkdir XXX_project..转载 2021-11-02 17:06:09 · 714 阅读 · 0 评论 -
linux 安装任意多的python版本且不冲突
linux 安装任意多的python版本且不冲突查看历史Python并记录下载Anaconda安装自己的python注释掉conda修改的.bashrc修改python命令链接大功告成参考博客如下教程都是基于Anaconda版本的Python进行,官方Python请自行实验查看历史Python并记录直接输入python和python3显示使用的是anaconda自带的python环境,且都是3.6下载Anaconda完整版建议清华镜像,下载速度快https://mirrors.tuna.ts原创 2021-07-13 17:59:12 · 459 阅读 · 0 评论 -
Python exec使用:locals,golobals传参读取返回值
简介exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码,等同于可以执行整个py文件。简单示例:>> exec('foobar = 123')>>> foobar123exec函数还支持可选参数 :exec(object[, globals[, locals]])这两个参数可以用来指定执行代码时可以使用的全局变量和局部变量, 以及收集执行代码后的全局变量和局部变量。glo..原创 2021-02-12 18:18:18 · 4234 阅读 · 2 评论 -
Redis进阶二之分布式锁的实现
转自https://www.cnblogs.com/jackion5/p/13747584.html前言分布式系统中,由于多个进程之间会存在操作共享数据的情况下,此时就需要一个协调系统进行各个进程之间的协调,避免多个进程之间同时修改数据导致互相影响的情况。通常可以采用数据库锁来实现数据不会再同一时间修改,但是数据库锁的悲观锁,比较影响整个系统的性能。并且如果修改的数据并非是数据库中的数据时,通过数据库锁就无法实现了。此时就需要一个分布式锁来进行分布式协调。一、分布式锁高可用的分布式锁需要达到转载 2020-12-10 08:17:44 · 128 阅读 · 0 评论 -
记异步写数据库覆盖带来的问题
需求:将用户多次调用产生的对话log写入到pg库,对话一次产生一轮,但同一个session只写入一行,所以采用覆盖,同时由于用户的返回与log入库无关,所以采用异步入库。同时考虑到频繁插入会耗时很大,设置了1s批量插入一次。实现:如下图,APP部署了两个。实现时,每次开始处理请求时都会去Redis中拉取之前该session存储的请求记录,保证当前内存中含有该请求以及历史请求。处理完该请求后又将请求log存入Redis 插入pg库时,会将当前内存里的所有请求入...原创 2020-12-09 21:09:47 · 420 阅读 · 0 评论 -
不能用浏览器做异步测试
如果服务器是异步的,同一时间可以处理多个请求 如果要测试这个异步服务是否真的异步,不要用浏览器发送同一个请求进行测试 因为浏览器在短时间内对同一个请求发送多次,它会以为在第一个请求都没返回就发送第二个同样请求是没有意义的,就会等到第一个请求返回了再去请求,从而看到的现象是阻塞的例如:浏览器请求接口:http://kingwang.webevent.61.com/seer_2015christ/share 在很短的时间内又请求同一个接口:http://kingwang.webevent.61...原创 2020-12-09 11:23:27 · 70 阅读 · 0 评论 -
python性能分析之cProfile+pstats利器
性能问题解决思路分析耗时代码用python开发的程序,如果对性能有要求,很容易遇到性能瓶颈,此时,解决问题的第一步应该是分析性能瓶颈出在哪里,即分析耗时最大的代码或函数是什么,而做这个的利器就是cProfile和 pstats。针对性地优化如瓶颈在io(包括磁盘文件读写,控制台输出如print,log,网络io),可以使用异步方案:io操作分离+多线程/协程异步如瓶颈在cpu,可以使用JIT优化,如pypy,numba等,以及多进程性能分析cProfile思路1.使用cPro.原创 2020-11-28 23:01:10 · 2047 阅读 · 0 评论 -
python性能分析之log
最近在优化一个Python项目,里面包含很多set,list,dict等操作,代码行数2000多行,每次运行耗时都在30-50ms,本以为是Python语言的动态解析特性导致运行性能太低,便尝试使用JIT工具进行优化,折腾一番之后,性能只提升20%,远没有官方介绍的6倍之多,反复查看代码,想到了IO耗时的问题,而是怀疑log输出到控制台耗时是否是罪魁祸首,实验下来发现的确如此。实验内容:分别对比,运行下面代码,记录耗时情况,结果:运行1000次 加法: 0.41604042053222656 .原创 2020-11-28 19:08:30 · 1062 阅读 · 1 评论 -
tornado异步非阻塞实现方式
目录tornado异步非阻塞实现方式1.多线程2.老版协程3.新版协程实验1.完全阻塞,同步代码2.老版本协程3新版本协程4 多线程+新版协程,线程函数失效5.线程+不声明异步,可以非阻塞6.线程+声明异步 = 非阻塞tornado框架的异步非阻塞同步阻塞(Blocking)异步非阻塞(Non Blocking)tornado封装的协程+生成器tornado封装的协程+FuturePython 3.5: async and awai..原创 2020-11-21 22:40:38 · 1342 阅读 · 0 评论 -
Python工程项目编译成pyc部署
目录功能pyc部署优点使用功能将Python工程目录下的所有py文件编译成pyc文件,可选择生成新的工程目录,也可以选择删除源文件,仅保留pyc文件用于部署pyc部署优点省去了Python动态编译的过程,直接加载pyc字节码文件,可以加速Python运行速度 pyc文件是二进制文件,可以保护源代码不被看见,当然也有大牛能反编译,这个还么有研究过使用将该函数py文件放在和待编译的工程目录同一级,运行就可以了import datetimefrom pathlib.原创 2020-11-20 14:10:38 · 2662 阅读 · 0 评论 -
supervisor、Nginx、Tornado、crontab部署多个Web服务进程并定时优雅重启
参考:https://www.cnblogs.com/sunsky303/p/9579926.html目录启动脚本supervisor监控进程定时重启nginx负载均衡tornado优雅重启nginx可以提供web 服务、负载均衡 (反向代理)、web cache(web 缓存);Tornado是一个基于epoll的异步Web开发框架,通常使用Nginx做为Web服务器时,都会以FastCGI模式,而我们从开发、调试、运维的角度考虑,使用了反向代理的模式,同时Nginx可以做一些原创 2020-09-29 19:02:09 · 390 阅读 · 0 评论 -
Python深入:内存管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!目录划重点1.引用计数2.分配对象和取消分配对象计数3.执行回收次数计数讲解对象的内存使用对象引用对象引用减少垃圾回收分代回收孤立的引用环总结对象的内存使用对象引用对象引用减少垃圾回收分代回收孤立的引用环总结划重点1.引用计数当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象转载 2020-09-29 17:34:57 · 284 阅读 · 0 评论 -
python 异步 web 框架性能对比:tornado、tornado-uvloop、fastap、sanic
#run_tornado.py# tornado-6.0.2import tornado.ioloopimport tornado.webimport jsonclass MainHandler(tornado.web.RequestHandler): async def get(self): self.write("Hello, world") async def post(self): self.write(json.dumps({"c.原创 2020-09-23 14:35:22 · 2744 阅读 · 0 评论 -
AttributeError: ‘coroutine‘ object has no attribute
最近在将一个tornado的同步项目改造成异步协程模式,遇到一个报错AttributeError: 'coroutine' object has no attribute 'xxx',这是由于原来同步代码下的函数式编程写法,返回对象原来还是直观的返回值,可以实现直接运行属性取值,或属性方法。但被改造成协程后,协程函数返回的是协程对象,不再是直观的返回值,导致报错,show code:import asyncioclass Human: def __init__(self,age,name原创 2020-09-22 14:15:51 · 7211 阅读 · 0 评论 -
python 深拷贝deepcopy效率低及提速方法
deepcopy是对对象的引用的引用对象都进行递归copy,为了防止递归溢出,deepcopy会记录每次已经copy的对象,所以增加了存储操作复杂度,从而影响执行效率。提速方法:1.采用pickle模块进行序列化和反序列化import copyimport pickleimport timeitclass A: def __init__(self): self.array = [1,2,3]def cp(): a = A() for i in rang原创 2020-09-18 16:00:43 · 3569 阅读 · 0 评论 -
python异步请求http client 超时计时
python异步请求http client 超时计时自Python 推出之后async、await关键字支持异步协程之后,异步框架越来越火热,像tornado本身支持异步编程,新推出的fastapi速度和可用性都受到追捧,异步编程将是Python解决并发短板的一大利器。异步并发实现,一是依赖框架提起的server端,同时也需要api中依赖的client同时实现异步,否则异步因一处io操作阻塞,因无法让出event loop而最终导致无法完全异步。目前,封装较好,使用方便的http client主要有原创 2020-09-13 22:30:32 · 1678 阅读 · 2 评论