
python
文章平均质量分 80
zp0int
这个作者很懒,什么都没留下…
展开
-
gunicorn workers 区别(sync/eventlet/gevent/thread/tornado)
gunicorn workers 区别以后都在 github 更新,请戳 gunicorn workers 区别我们在 第一篇 里已经了解过 gunicorn 的 SyncWorker 原理, 现在我们来看下其他的 workers 是如何工作的目录eventletgeventthreadtornado更多资料Eventlet如果你打开 eventlet 的官网Eventlet 是一个 Python 网络库, 支持并发访问, 使用这个库可以在不改变代码写法的情况下更改代码的运行方原创 2021-08-04 23:51:39 · 5898 阅读 · 0 评论 -
django 和 gunicorn
django gunicorn gevent greenlet daphne 他们是什么?以后都在 github 更新,请戳 第一篇 django 和 gunicorn第一篇 django 和 gunicorn如果你进行过基于 Python 的 web 应用开发, 你会发现网络上能搜到许多不同的框架和组件如果你接手过其他团队成员的项目, 你会发现虽然都是 Python 代码, 但是同样有各种各样的组件和 W(A)SGI 库”喔这是 django 应用, 我用下面这行命令就可以启动了 python原创 2021-06-28 23:56:34 · 1038 阅读 · 2 评论 -
python3 pickle 源码分析/实现
pickle 实现以后都在 github 更新,请戳 python3 pickle 实现目录相关位置文件简介实现Noneboolintfloatbytesstrtuplelisttypeobject相关位置文件Lib/pickle.pyModules/_pickle.cModules/clinic/_pickle.c.h简介我们用 pickle 来对 python 中的对象进行序列化和反序列化, pickle 总共有好几个版本, 当前的版本号是 4p原创 2021-05-16 15:10:29 · 804 阅读 · 5 评论 -
sanic 全局单例化及单元测试
我们基于 sanic 框架开发 web 服务, 以事件循环的方式驱动, 由于业务的复杂性, 框架内需要集成 http 连接池, redis 连接池, 数据库连接池等, 即使不是连接池, 也需要进行单例化而 python 中的事件驱动方式使得这些...原创 2020-08-14 23:27:39 · 910 阅读 · 0 评论 -
python bytes对象 底层实现 源码分析 PyBytesObject(bytes)
PyBytesObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解python bytes我们都知道在 python 中有以下两个对象可以表示 字节(bytes)a = bytes(b"\x1cccc")print(a) # b'\x1cccc'b = bytearray(b"\x1c...原创 2019-03-18 17:45:20 · 1544 阅读 · 0 评论 -
python 元组对象 底层实现 源码分析 PyTupleObject(tuple)
PyTupleObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解python tuplepython 的内建对象除了 list 这个可变的数据结构,还有 tuple 这个不可变的数据结构,不可变的意思是这个 tuple 的长度在创建的时候就是恒定的,不能增加/删除元素,但是 tuple 里面存储的对象...原创 2019-03-13 18:43:39 · 2834 阅读 · 1 评论 -
二进制位统计算法(swar)
最近在看 <<redis 设计与实现>> 里面讲到了几种二进制位统计算法,在此做个记录1. 遍历二进制位def count_bit(num): count = 0 while num: count += num & 1 num >>= 1 return count遍历统计需要 ...原创 2019-04-08 15:31:30 · 4885 阅读 · 0 评论 -
python 字符串对象 底层实现 源码分析 str/unicode
str以后都在 github 更新,请戳 cpython str/unicode 底层实现解析目录相关位置文件内存构造字符串转换internedkindunicodecompact相关位置文件cpython/Objects/unicodeobject.ccpython/Include/unicodeobject.hcpython/Include/cpython...原创 2019-04-20 22:46:41 · 1339 阅读 · 0 评论 -
django启动流程
目录调用栈调用栈命令行输入以下命令时 python3 manage.py runserver原创 2019-05-17 16:03:46 · 1613 阅读 · 0 评论 -
python __slots__
slot以后都在 github 更新,请戳 python __slots__目录相关位置文件slot示例实例属性访问访问实例属性wing设置了值之前设置了值之后访问实例属性x类属性访问访问类属性wing访问类属性x不同有slots在创建 class A 时属性是如何初始化的 ?在创建 instance a 时属性是如何初始化的 ?MRO中...原创 2019-07-19 18:16:05 · 231 阅读 · 0 评论 -
python 性能分析和 C 扩展
python 性能分析和 C 扩展以后都在 github 更新,请戳 python 性能分析和 C 扩展目录概览示例性能分析C 模块python2python3更多资料概览最近我在做一个关于优化之前其他人写好的 API 业务接口的任务, 这个接口是在 Django 服务中编写的, 这个 API 会启动一个异步任务, 这个异步任务有时需要好几分钟才能结束, 在这...原创 2019-07-29 15:50:40 · 204 阅读 · 0 评论 -
python 集合对象 底层实现 源码分析 PySetObject(set)
PySetObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解 python setset 的实现方式和 dict 有点类似,但是稍微简单一些,我们来看看 set 的 memory layout我们来看下set_lookkey 这个函数/* Objects/setobject.c...原创 2019-03-12 18:34:46 · 903 阅读 · 0 评论 -
python 字典对象 底层实现 源码分析 PyDictObject(dict)
PyDictObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解python dictdict 顾名思义是字典,通常来讲一个字典对象都是通过 HashTable 实现,HashTable 里面有一排桶,根据哈希算法不同的 key 映射到不同的或者相同的桶的位置,然后把 key/value 对存储到...原创 2019-03-11 18:13:31 · 1354 阅读 · 0 评论 -
aiohttp(yarl) 对 url 部分字符自动 urldecode
最新碰到一个用 aiohttp 访问不出内容,但是用 requests 能访问的情况,url 是事先进行了 urlencode 的, 下面的 url 随便找了个站点代替,但是把重点的参数提了出来%40 对应的是 @%3a 对应的是 :https://www.xxx.com?xxx%40yyy%3azzz这个时候 requests 打开是有内容的,但是 aiohttp 打开是空...原创 2018-08-24 19:13:06 · 2011 阅读 · 0 评论 -
python 的垃圾回收机制(Garbage Collection)
以后都在 github 更新,请参考python 垃圾回收最近读了一些关于 Python 内部实现的博客,其中有几篇关于Garbage Collection 的,在此分享一下对于比较小块的内存(比如小于等于512bytes), 当你认为这个对象所占的内存需要被解释器回收时,解释器实际上不会对这块内存进行回收,而是保留起来,下次使用。这有点像 C++ 的默认的 std::alloc...原创 2019-01-02 18:08:40 · 2741 阅读 · 0 评论 -
python 源码分析 基本篇
以后都在 github 更新,请参考Cpython Internals版本第一步克隆 Cpython 仓库到本地, 切换到我当前的版本, 我当前的版本号是3.8.0a0git clone https://github.com/python/cpython.gitgit reset --hard ab54b9a130c88f708077c2ef6c4963b632c132b...原创 2019-02-03 13:10:24 · 9831 阅读 · 2 评论 -
python 栈帧对象 frame 底层实现 源码分析 PyFrameObject
PyFrameObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解 python frameframe一个 c 文件会被编译器最终转换成二进制文件,这个二进制文件文件里面的指令是 cpu 指令,具体的指令内容因 cpu 而异,一般的编译器过程会把源代码转换成中间结构(IR), 同样的程序在不同的机...原创 2019-02-06 13:57:01 · 4282 阅读 · 1 评论 -
python code对象 底层实现 源码分析 PyCodeObject
PyCodeObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考详解 python code在编译好的 c 程序里面,code object 可以理解成一段二进制的数据,每一个字节都有与之对应的机器指令,Program Counter 在对应的程序的代码段上,按照顺序执行机器指令,这个程序就能按照作...原创 2019-02-10 01:13:11 · 852 阅读 · 0 评论 -
Boost Python 的安装配置以及示例 (支持python3.x)
Boost Python 的安装配置以及示例 (支持python3.x)目录Boost Python 的安装配置以及示例 支持python3x目录简介Boost Python 安装 UbuntuHello World 示例python35python27其他示例简介BoostPython 可以让 Python 和 C++ 最大程度的结合起来。在与其他语言交互时,BoostPython 并原创 2017-10-09 16:51:42 · 14003 阅读 · 0 评论 -
python 迭代器 底层实现 源码分析 PyGenObject(generator)
PyGenObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解 python generator用过 python 的同学都知道 python 内置了一个类型叫做 generator, 翻译过来是迭代器/生成器generator 也是一种设计模式,在其他语言里面,只要能记录下函数/某个算法运行的状...原创 2019-02-12 22:54:34 · 1155 阅读 · 0 评论 -
python 列表对象 底层实现 源码分析 PyListObject(list)
PyListObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解 python list用过python 的童鞋都知道 python 内建了好几种数据结构,其中一种就是 list,你可以通过如下的方法定义一个 lista = []b = []c = list((1, 2, 3))d = c...原创 2019-02-14 16:14:48 · 1272 阅读 · 0 评论 -
python 整型对象 底层实现 源码分析 PyLongObject(int)
PyLongObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解python int在当前的版本中,cpython只有 long 和 float 两个类型来保存数字,一个保存整数,一个保存浮点数,而用来保存整数的这里叫做PyLongObject,他是一个容器对象,我们来看下他的 memory l...原创 2019-03-14 18:19:20 · 832 阅读 · 0 评论 -
python bytearray 对象 底层实现 源码分析 PyByteArrayObject(bytearray/buffer protocol)
PyByteArrayObject本文参考的是3.8.0a0 版本的代码,详见cpython 源码分析 基本篇以后都在 github 更新,请参考图解python bytearray我们都知道在 python3 中,bytes和 unicode 两种不同的对象被严格的区分开来,byte就是表示字节数组,并且是不可变的字节数组,你不能改变bytes 和 unicode...原创 2019-03-15 18:17:47 · 1269 阅读 · 0 评论 -
aiohttp 指定 tls 版本 (ssl 错误)
某些网站对 ssl 1.0 以上的版本支持并不友好,但是 python ssl lib 默认会指定当前OpenSSL支持的最高版本,并且当服务器返回的ssl版本号低于或者等于1.0时, 会出现如下错误aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host www.mdnkids.com:443 ssl:&l...原创 2018-08-24 18:31:00 · 9029 阅读 · 0 评论