
Python
文章平均质量分 58
猴子饲养员
爱Python,爱生活~
展开
-
python websocket 接入的设计方案、核心代码
需求场景:在用户登陆后,与前端保持websocket的连接,进行前后交互,比如:消息通知参考官方文档:https://websockets.readthedocs.io/en/stable/intro.html使用版本python 3.8 websockets==8.1redis==3.5.3websocket 安装pip install websockets主要设计方案用户:websocket 对象存储格式,存在内存中, 以用户id为key, value是websock.原创 2020-12-08 18:19:52 · 931 阅读 · 0 评论 -
PEP 591-python中 Final 最终限定符 使用规范
来源:https://www.python.org/dev/peps/pep-0591/添加final目的声明不应重写的方法声明一个类不应该被子类化声明不应重新分配变量或属性@final 使用方法typing.final装饰用来限制使用继承from typing import final@finalclass Base: ...class Derived(Base): # Error: Cannot inherit from final class "Base"原创 2020-10-09 18:28:36 · 4314 阅读 · 1 评论 -
python3.8 typing 使用规范
参考来源:https://docs.python.org/zh-cn/3.8/library/typing.html入参出参规则一致简单变量直接返回,例如:str int float bool若返回代码中或第三方包的类/实例,则使用导入类class A: passdef test() -> A: a = A() return a若代码中对象(变量/类/方法)不可变更/继承,则必须尽量(最好、必须)使用Final声明,详情使用方法参阅https://www.原创 2020-10-09 16:35:22 · 2403 阅读 · 1 评论 -
celery中的 task_time_limit 和 task_soft_time_limit
本周,项目里突然爆出几个任务失败的告警,失败任务也没进死信,就这么丢了,经过排查,发现了这两个配置项的坑。两个配置项都是默认无时间限制, 单位:秒区别task_time_limit:hard模式,如果配置了10s, 10s内 task 没有执行结束,则处理这个task会被杀掉,并继续执行其他新的 tasktask_soft_time_limit:soft 模式,如果配置了10s, 10s内 task 没有执行结束,可以在 task 内捕获这个异常,并处理。也可以在全局处理,进行重试或扔死信队列等原创 2020-08-25 17:32:55 · 5406 阅读 · 0 评论 -
唠唠python的协程 分享
原创 2020-06-29 16:31:45 · 196 阅读 · 0 评论 -
python 3.5 新特性分析
文章来源https://docs.python.org/3/whatsnew/3.5.htmlpython3.5 新特性标准库的重大改进:collections.OrderedDict 改用C实现,性能快4到100倍。ssl模块获得了 对 Memory BIO 的支持,它将SSL协议处理与网络IO分离。os.scandir()函数提供了一种更快速的目录遍历方式。functools.l...翻译 2019-02-11 21:24:28 · 1160 阅读 · 0 评论 -
Celery实践, 多队列,多优先级,任务重试
在 Python 的 web 框架中,Flask 由于其轻量、易于扩展而得到了广泛的应用,本文主要基于 Flask 浅谈 Celery 的应用。 Celery是一个简单、灵活且可靠的分布式系统,常用于处理大量消息,同时也提供了维护该系统所需的工具。简而言之,Celery就是一个任务队列,专注...原创 2019-02-11 21:30:26 · 6136 阅读 · 0 评论 -
python 3.6 新特性
来源https://docs.python.org/3/whatsnew/3.6.html变更array.array 即使迭代的数组被扩展,耗尽的迭代器现在仍然会耗尽。与其他可变序列的行为保持一致。从Python 3.6开始,asyncio模块被认为是稳定的。hashlib 支持 OpenSSL 1.1.0。导入无法找到模块时引发新的异常ModuleNotFoundError (子类...翻译 2019-02-27 17:24:57 · 662 阅读 · 0 评论 -
python debug新姿势 -- pysnooper
一般情况下,在项目中都用 Pycharm 来进行debug, 但是不方便的时候怎么办呢? 还用老旧的 logger 吗?今天发现 pysnooper 的工具,真是超级方便,可以把函数每一步执行的输出都打到文件中。首先,你要安装它pip install pysnooper然后,使用它, pysnooper 可以以装饰器的方式放到你想debug的函数上,然后指定输出文件, 也可以不输出,...原创 2019-07-31 11:19:59 · 409 阅读 · 0 评论 -
python 中 set 集合支持的操作
集合是一个无序的不重复的可迭代对象,集合中的元素都是可哈希的(不可变的)set([iterable]) 初始化一个集合>>> set()set()>>> set([1,2,3,2,4]){1, 2, 3, 4}add(self, *args, **kwargs) 往集合里添加元素>>> a = {1,2,3}>>...原创 2019-09-27 19:15:23 · 189 阅读 · 0 评论 -
python 内置函数一览
int(x, base=10) 将一个字符串或数字转换为整型, 默认十进制>>> int('120')120>>> int(120.12)120>>> int('10', base=16)16str() 将对象转化为适于人阅读的形式,即字符串# 数字转中文>>> str(100)'100'# unico...原创 2019-09-30 14:42:52 · 484 阅读 · 0 评论 -
16种python设计模式使用场景、特点简述
++设计模式是在已有的方案之上发现更好的方案,而不是全新发明,不要为了强迫自己使用已有的设计模式而限制了你的创造力++创建型模式 处理对象创建相关问题1 工厂模式1.1 工厂方法==一个函数==,对不同的输入参数返回不同的对象 - 集中在一个地方创建对象,方便对对象的追踪 - 解耦创建对象-使用对象 - 在必要时才创建新对象,提高性能和内存使...原创 2018-07-22 23:48:17 · 1726 阅读 · 0 评论 -
python funtools 模块常用函数
1、partial(func [,* args] [,** keywords])对函数局部进行控制,这个局部最常见的就是对参数的控制from functools import partialdef run(name, age): print(name, age)run2 = partial(run, age=18)run2("laowang")输出:la...原创 2018-07-22 18:41:55 · 2670 阅读 · 0 评论 -
windows Linux Mac 使用virtualenv virtulenvwrapper创建 多个python虚拟环境
配置环境变量以windows为例,linux不用手动配置环境变量安装python这个可以官网下载安装包,直接安装配入windows环境变量在path系统变量中加入python安装包路径,这里同时安装了python2和python3,由于python3写在了前面,所以当运行python时,默认会先启动python3;很重要,一定要写;C:\python35;C:\python35\Scripts;C原创 2017-11-10 22:44:55 · 349 阅读 · 0 评论 -
简单理解Python中的类对象、实例对象、属性、方法
# 类对象 # 公有类属性 # 私有类属性 # 魔法方法 # 公有实例属性# 私有实例属性# 私有方法# 公有方法原创 2017-08-22 22:57:30 · 7928 阅读 · 0 评论 -
Python-单例模式-只初始化一次
单例模式 只初始化一次单例模式创建的原理就是借用了私有类属性的性质,我们知道私有类属性不能直接在类外被修改,所以用私有类属性的状态当做条件来控制类内方法的调用下面代码中的__species负责控制__new__方法,保证实例对象只能被创建一次,创建多个对象,均指向同一个数据内存位置__first_init负责控制__init__方法,保证再次创建的对象不能更改初始化的内容原创 2017-08-23 19:01:36 · 9487 阅读 · 0 评论 -
python 创建:udp tcp服务器 线程 进程 进程池 互斥锁 协程
python 创建:udp tcp服务器 线程 进程 进程池 互斥锁 协程原创 2017-09-24 23:21:54 · 565 阅读 · 0 评论 -
Django框架电商网站开发流程(Python)
分为四个应用用户user购物车carts商品goods订单order原创 2017-10-22 15:36:26 · 21832 阅读 · 3 评论 -
Python爬虫 --requests库实践
import requestsget请求<!--get请求-->response = requests.get(url, params, kwargs)<!--只请求url-->response = requests.get(url)<!--带参数请求-->params = {"key":"value"}response = requests.get(url, params = params原创 2017-10-29 13:55:13 · 470 阅读 · 0 评论 -
Python中filter、map、reduce函数
pythonfilter函数map函数reduce函数原创 2017-09-13 21:30:54 · 434 阅读 · 0 评论 -
Python爬虫工具 Selenium webdriver -自动化测试工具
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。from selenuum import webdriver<!--创建url-->url = "http://www.baidu.com"<!-原创 2017-11-01 20:16:13 · 505 阅读 · 0 评论 -
Python 排序 冒泡排序 希尔排序 快速排序 插入排序 选择排序 归并排序
Python排序冒泡排序希尔排序快速排序插入排序选择排序归并排序原创 2017-09-24 23:24:00 · 538 阅读 · 0 评论 -
Python中常用的正则表达式
python 中通过正则表达式对字符串进行匹配的时候,需要用到re模块re.matchre.searchre.findallre.subre.splitre.compilere.finditer原创 2017-08-23 00:25:50 · 382 阅读 · 0 评论 -
python 中构建字典 dict 的几种方式
1、直接创建方法一:temp = {} temp['name'] = 'xiaoming'方法二:temp = dict()temp['name'] = 'xiaoming'2、dict() 函数创建方法一:temp = dict(name='xiaoming', age=18)方法二:temp = dict((('name', 'xiaoming'), ('age', 18)))方法三原创 2017-12-31 21:54:29 · 27911 阅读 · 0 评论 -
简析 GIL 全局解释器锁,如何避免GIL,以及和互斥锁的区别
PythonGLI如何避免GIL: GIL和互斥锁的区别原创 2017-08-22 22:46:49 · 518 阅读 · 0 评论