Python小记
文章平均质量分 81
有关心情
在python的道路上越走越远(一个初级小白,永远的小白)
展开
-
tornado + peewee 下打印执行 SQL 日志
tornado + peewee 下打印执行 SQL 日志文章目录tornado + peewee 下打印执行 SQL 日志起步环境准备打印 peewee 的 SQL 日志第一个为什么第二个为什么第三个为什么更优雅的日志打印感谢起步最近在用 tornado + peewee + peewee-async 写自己的东西。有了早前工作上的重大教训,这次我一上手就着手打开 peewee 或者是 peewee-async 的 SQL 执行日志,遇到了点问题。最后问题解决了,但过程中产生的几个“为什么”想在这里原创 2021-04-12 09:24:13 · 1710 阅读 · 0 评论 -
SQLAlchemy 奇怪的查数据库行为
SQLAlchemy 奇怪的查数据库行为文章目录SQLAlchemy 奇怪的查数据库行为前言环境准备奇怪的查数据库行为expire\_on\_commit如何解决020.10.16前言进行数十亿数据压测时,测试环境发生了一个很奇怪的现象:在对 SQLAlchemy 查出的结果做遍历操作时,随着集合越大,遍历的时间跟着变长,是肉眼可见的变长。根据现象,一位腾讯的程序员向我提出了疑问:会不会遍历过程中 SQLAlchemy 又去查询了数据库?环境准备-- DDLCREATE TABLE `stu原创 2020-10-16 20:45:45 · 1265 阅读 · 0 评论 -
databases 连接 pg 查询时返回的数据类型
databases 连接 pg 查询时返回的数据类型020.10.6使用 databases 做异步查询的时候,sqlite、mysql 查询结果返回的都是元组类型,但是连接 pg 数据库的时候返回的是 Record 对象实例。database = Database( 'postgresql://postgres:password@192.168.111.136:54321/postgres', min_size=5, max_size=20)await databas原创 2020-10-06 20:36:45 · 755 阅读 · 0 评论 -
defaultdict 嵌套用法
defaultdict 嵌套用法文章目录defaultdict 嵌套用法起步方法1:初始化目标数据结构方法2:setdefault方法3:collections.defaultdict起步昨天在公司加班要处理这样一组数据:{"村": "李村", "症状": "血糖", "姓名": "小李1"}{"村": "李村", "症状": "血糖", "姓名": "小李2"}{"村": "李村",...原创 2020-03-29 13:55:49 · 1822 阅读 · 1 评论 -
as_completed和wait源码分析
as_completed和wait源码分析文章目录as_completed和wait源码分析前言as_completewait前言在ThreadPoolExecutor引导的多线程开发中,有as_completed()和wait()两个辅助函数。下面结合源码分析它们各自作用。因后面多次提到事件锁,也许,你需要对它事先了解Python同步机制(semaphore,event,queue)。...原创 2019-02-22 10:02:30 · 3069 阅读 · 0 评论 -
Socket编程
Socket编程文章目录Socket编程前言实例一个socket服务器与客户端简易聊天系统运行效果前言在网络编程里总会涉及到socket编程,或者说,网络编程是基于socket之上的。通过socket,我们可以建立tcp连接,或是udp通讯方式。亏得Python的完美封装,Socket编程变得容易上手。接下来会写一个基于tcp方式的简易终端聊天系统。实例一个socket在Pytho...原创 2019-02-11 10:21:57 · 668 阅读 · 0 评论 -
进程间通信(Python:Queue,Pipe,Value..)
进程间通信(Python:Queue,Pipe,Value…)文章目录进程间通信(Python:Queue,Pipe,Value..)前言QueuePipeValue/ArrayManager感谢前言与多线程不同,多进程之间不会共享全局变量,所以多进程通信需要借助“外力”。在Python中,这些常用的外力有Queue,Pipe,Value/Array和Manager。Queue这里的...原创 2019-02-17 14:36:22 · 722 阅读 · 0 评论 -
ThreadPoolExecutor源码分析
ThreadPoolExecutor文章目录ThreadPoolExecutor前言ThreadPoolExecutor一个简单的多线程submitshutdownmap构造函数接收参数Future前言Python中,ThreadPoolExecutor对Thread做了进一步封装。在Thread基础之上,使得多线程开发更简单了。另一方面,由于还存在ProcessPoolExecutor类...原创 2019-02-19 10:53:59 · 494 阅读 · 0 评论 -
Python中的线程锁
Python中的线程锁文章目录Python中的线程锁前言为什么需要线程锁LockRLock感谢前言尽管Python中的线程有些鸡肋,但在IO操作中,提速显然。然而线程存在一个缺点,你可能不得不费点心力去关注线程同步的问题。这时我们需要用到线程锁。为什么需要线程锁这里有如下一段代码:import threadingdef increase(): global num ...原创 2019-02-14 09:12:18 · 600 阅读 · 0 评论 -
装饰器
文章目录前言一个示例装饰器的作用如何实现一个装饰器装饰器传参类装饰器保留原函数的元数据最后前言最近阅读公司的项目代码,许多地方用到了装饰器。然后就想起年初,那个时候刚刚接触Python,很多东西跟C啊C++不同。一时之间也没搞懂装饰器,跟着示例代码敲过几遍,也成功运行了,然后就像一个“渣男”头也不回的走掉。真的就是走掉了,我从来没在自己的demo中使用装饰器。既然公司的项目需要,我当然不能...原创 2018-10-28 22:18:36 · 244 阅读 · 0 评论 -
Python 导包技巧
Python 导包技巧文章目录Python 导包技巧起因场景1场景2场景3感谢起因起初学 Go 语言的时候,对它的导包规则感到痛苦,——“那么麻烦干嘛呢!”。但最近接到一些新功能开发任务,于是 “啪嗒啪嗒” 写代码,结果更痛苦了。公司项目目录规划打一开始就不合理,以此为基础的 “繁荣发展” 导致更多混乱与麻烦。于是马上翻开《Python cookbook》解惑,有些心得,这里记之。场景...原创 2019-04-25 10:56:37 · 1924 阅读 · 0 评论 -
协程(1)
协程(1)文章目录协程(1)起步协程函数链式调用并发执行执行普通函数起步协程平时开发都不用,既是增加编程难度,也是确实用不上。因此不如何关注。偶然看到陈祥安老师一篇《5 分钟入门 Python 协程》的文章,逻辑清晰,看后颇觉受益,于是有了这篇笔记。以下代码基于 Python3.6.1协程函数在函数定义最左加上async,表示该函数是协程函数。直接调用一个协程函数,得到的是一个 c...原创 2019-05-21 20:46:31 · 630 阅读 · 0 评论 -
Python 判断实例对象真与假
Python 判断实例对象真与假文章目录Python 判断实例对象真与假起步boollenbool 与 len起步当需要 if obj 或者not obj判断一个实例对象的真假时,Python 解释器会优先调用魔法方法 __bool__()。如果没有该方法,就调用 __len__()。如果两个方法都没有,总是返回 True。boolclass MyClass(): def _...原创 2019-05-17 14:54:28 · 889 阅读 · 0 评论 -
set() 去重原理
文章目录起步自定义的数据结构\_\_eq__ 函数\_\_hash__ 函数去重原理起步众所周知,set() 是 Python 中的"天然去重因子"。对一串数据如:lyst = [1, 1, 2, 4, 4],我们常常 set 一下,也就是:set(lyst),达到去重目的。那么,set() 是如何去重的呢?自定义的数据结构为了贴合实际的开发需求,我们常需要自定义数据结构。拿通用示例...原创 2019-06-13 12:46:02 · 8995 阅读 · 3 评论 -
Python 实现单例
Python 实现单例文章目录Python 实现单例起步__new__函数元类 metaclass装饰器函数装饰器类装饰器方法静态方法 staticmethod类方法 classsmethod名字覆盖属性共享起步单例模式是一种常用的软件设计模式,用来确保一个类只会有一个实例存在。以下是 Python 中实现单例模式的多种方法,环境基于 Python3.6.6。__new__函数cl...原创 2019-06-11 21:27:30 · 8147 阅读 · 1 评论 -
Python同步机制(semaphore,event,queue)
Python同步机制(semaphore,event,queue)文章目录Python同步机制(semaphore,event,queue)前言SemaphoreEventQueue前言在Python中的线程锁和Condition源码分析二文的基础之上,对Python多线程数据同步时可能用到的Semaphore、Event、Queue做了一些粗略分析。Semaphore从一个小dem...原创 2019-02-16 11:46:42 · 736 阅读 · 0 评论 -
Python中的迭代协议
Python中的迭代协议文章目录Python中的迭代协议前言IterableIteratorfor...in...__getitem__感谢前言Python的特色之一是基于协议实现功能。比如改变一个加号(+)的行为,在C++中需要操作符重载,在Python中则是重写__add__方法。为了描述可迭代对象和迭代器,Python提供了两个魔法方法,分别是__iter__和__next__。又为...原创 2019-02-08 19:33:55 · 568 阅读 · 0 评论 -
@property的使用
文章目录前言普通示例对属性赋值进行约束@property的使用@property原理前言手机QQ有一个根据条件查找陌生人的功能。我初中时挺爱玩儿的,也因此在好友列表里添加了不少女生,相隔十年,我不得不感谢当时做出英明决定的自己,因为现在浏览空间总能看到大量的美女自拍,爽歪歪…………咳咳!不扯了,进入正题。普通示例既然我们要查找符合条件的陌生人,那当然得先构建一个具有这样条件的人出来,再...原创 2018-10-04 22:29:11 · 31360 阅读 · 5 评论 -
元类
文章目录元类元类从哪来元类什么是元类?答:类的类。如何理解?可以这样说,我们用类来创建一个实例对象如myObject = MyClass()。事实上Python中的类也是对象(万物皆对象),所以类也需要通过类的类创建,如MyClass = MetaClass()。这个类的类(MetaClass)就是元类。元类从哪来通常我们用type(object)来获取一个对象的类型,如:&gt...原创 2018-10-05 23:58:05 · 268 阅读 · 0 评论 -
Python上下文管理器实现的三种方法
文章目录什么时候可以考虑上下文管理器方法1(上下文管理器协议)方法2(@contextmanager)方法3(ontextlib.closing())什么时候可以考虑上下文管理器当你的代码逻辑需要用到如下关键字时,可以考虑使用上下文管理器让你的代码更加优雅:try: ...finally: ...接下来介绍实现上下文管理器的三种方法。方法1(上下文管理器协议)总所周知,op...原创 2018-10-29 23:44:54 · 700 阅读 · 0 评论 -
super()函数的使用
@(python进阶)[super, 继承, mro]文章目录说明继承使用super()真实的super()总结感谢018.11.10说明一些Python入门书并没有讲清楚super()函数应该怎么用,只在说继承知识点的时候顺便一笔带过。为此我糊涂了好久、好久……继承Python中的继承很容易实现,如下:class A(object): def __init__(self,...原创 2018-11-10 14:51:59 · 15344 阅读 · 5 评论 -
Python中的下划线
Python中的下划线文章目录Python中的下划线前言单下划线前置后置双下划线前置后置前后置感谢018.11.25前言我发现公司里即便是工作经验一年的程序员依然对Python的私有属性有些迷糊——也就是下划线的问题——拿捏不准要怎么用。我想在此总结一下。单下划线前置前置单下划线是一种约定,即:认为这个变量或方法是类私有,外界不要调用。在这里,对象认为是“外界”。示例如下:cl...原创 2018-11-25 23:46:10 · 1212 阅读 · 0 评论 -
类属性与实例属性
类属性与私有属性文章目录类属性与私有属性类属性实例属性类属性的陷阱访问属性的优先级顺序总结感谢018.12.5类属性同一个类的多个实例共用一个类属性。import randomclass MyClass(object): # 类属性 num = random.randrange(10000)if __name__ == "__main__": myObjO...原创 2018-12-09 00:33:30 · 1513 阅读 · 0 评论 -
属性描述符
属性描述符文章目录属性描述符描述符描述符协议示例资料描述符与非资料描述符描述符的陷阱第一点:描述符必须在类的层次上(类属性)第二点:确保实例属性属于实例本身感谢018.12.4描述符在Python中,描述符作为一个用语言描述起来会有些抽象的概念。其定义有如下说法:一般来说,描述符是一个具有绑定行为的对象属性,其属性的访问被描述符协议方法覆写。这些方法是__get__()、 set()和...原创 2018-12-09 00:44:43 · 403 阅读 · 0 评论 -
yield的一些探索
yield的一些探索文章目录yield的一些探索开头概念yield 与 return生成器对象send方法closethrowyield from感谢开头这篇内容看起来混乱,但其实是在为一个知识点服务:如何实现协程?在有了明确的目标之后,就可以发现“混乱”都环绕在一个点上:如何手动切换函数的同时,捎上数据。因能力有限,错漏处望各友不吝赐教。概念yield关键字可以让一个函数秒变生成器...原创 2018-12-23 21:59:34 · 198 阅读 · 0 评论 -
两个不经意间的报错
文章目录前言字符串转字典字符串转数字前言“你应该常回头看看,才不至于迷失。”——这是我近些日子工作中总结出的句子。我在Python中总爱追求那些高大上的东西,什么元编程,什么异步,什么描述符……其实自己连最基本的语法也遗忘了。说来惭愧!若不是组内测试人员的“胡搅蛮缠”,我可能会永远困顿在自己的骄傲自满里。好在终究在别人的敲击下清醒过来。下面有两个极小问题引发的报错,书此以谨记之!字符串...原创 2019-01-21 22:16:56 · 197 阅读 · 0 评论 -
Python传参陷阱
Python传参陷阱文章目录Python传参陷阱默认传参递归中的参数默认传参设计一个Python函数时,免不了用到默认传参;默认传参时,又免不了用到列表类型。如下面这样:def add_elem_to_list(something, list_=[]): for i in something: list_.append(i)乍看之下,好似没什么问题,我们像下边这...原创 2019-01-28 10:35:25 · 541 阅读 · 0 评论 -
Python中的abc模块
Python中的abc模块文章目录Python中的abc模块前言判断类型isinstance实现原理实现ABC类其他基类总结前言在《抽象基类(ABC)》中,基于C++讲述抽象基类。尽管Python设计上以鸭子类型为主,但仍有抽象基类(ABC)的一席之地,它被封装在了abc模块中供程序员使用。abc模块有以下两个主要功能:某种情况下,判定某个对象的类型,如:isinstance(a, ...原创 2019-02-05 09:05:23 · 36619 阅读 · 6 评论 -
Condition源码分析
Condition源码分析文章目录Condition源码分析前言ConditionCondition源码分析实例化初探notify和waitnotifywaitwait_for前言除了之前在Python中的线程锁中提到的Lock和RLock,Python中的同步机制还有Conditions,我称其为条件锁。以下是我对Condition类的使用以及相关源码分析。Condition条件同...原创 2019-02-15 09:32:36 · 459 阅读 · 0 评论 -
Python中的切片
Python中的切片文章目录Python中的切片前言切片Tips实现切片感谢前言一直想把Python切片的知识总结,但拖延至今方才摁键。起因是室友接受了导师给的课题,机器学习相关,之前他一直实习Java,现在要学Python了。有一天他发信息问我关于切片的问题,我竟不能十分肯定的回答。惭愧!但不得不说,Python切片中的Tips是我之前不曾见过,也自然不曾使用的,今日就着外面世界的烟火炮...原创 2019-02-06 09:05:58 · 993 阅读 · 0 评论 -
ORM模型
ORM模型文章目录ORM模型前言Django中的ORM一个简单的ORM模型完整代码感谢前言ORM是三个单词首字母组合而成,包含了Object(对象-类),Relations(关系),Mapping(映射)。解释过字面意思,但ORM的概念仍然模糊。私以为要理解一个事物,最好的法子是搞明白它出现是为了解决什么问题。然而,ORM是否应该存在仍被许多程序员争论着。我所实习的公司,项目组负责封装数...原创 2019-02-07 22:26:52 · 940 阅读 · 0 评论 -
浅谈__getattribute__与__getattr__
参加校招的时候被面试官问到了,没能答上,主要是混淆了__getattribute__和__getattr__两个魔法方法。因此这里笔记一下。首先我们看看如何访问一个对象的属性:class A(object): def __init__(self): self.name = "Bob" self.age = 18 self.gender ...原创 2018-10-03 16:45:57 · 5116 阅读 · 7 评论