深入理解Python系列
文章平均质量分 90
本专栏准备更深入学习一下之前Python没有学过的遗漏知识点
Charles-Su
字节跳动后端工程师,热爱编程,喜欢钻研和研究技术。
展开
-
Python内存管理和垃圾回收
文章目录垃圾回收&&内存管理引用计数器标记清除分代回收垃圾回收&&内存管理引用计数器Python它的内部有一个ref_chain环状双向列表,我们的对象都存在这个环状双向列表里面,这个环状双向链表主要保存上一个对象和下一个对象对象的类型,例如字符形等等引用计数器,ob_refcnt这个对象的值如果对象是列表,元组等,会保存他们的元素,以及个数‘环状双向链表保存的计数器,当我们使用del删除一个对象的时候,它的值就减一,如果计数器是0了,就会被回收。当我们原创 2020-06-13 17:25:25 · 380 阅读 · 1 评论 -
Python是如何实现内存管理的
python是如何进行内存管理的Python引入了一个机制:引用计数。python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。总结一下对象会在一下情况下引用计数加1:1.对象被创建:x=42.另外的别人被创建:y=x3.被作为参数传递给函数:foo(x)4.作为容器对象的一个元素:a=[1,x,‘33’]引用计数减少情况1.一个本地引用离开了它的作转载 2020-05-13 20:32:03 · 296 阅读 · 0 评论 -
详解协程,事件驱动模型,I/O模型
文章目录协程介绍协程的使用greenlet实现手动切换协程协程遇到I/O自动切换(gevent)使用gevent注意使用gevent实现单线程下的多socket并发协程介绍协程是什么协程是微线程,他是一种用户态的轻量级线程,它的好处是没有线程切换的开销,我们开多线程,线程的上下文切换是耗费CPU的开销的,但是多协程里边,只是一个控制流调到了另外一个控制流,它还是单线程,所以协程很适合高并...原创 2020-05-12 16:35:47 · 241 阅读 · 0 评论 -
深入Python并发编程(二)详解GIL锁
文章目录啥是GIL锁GIL的历史原因GIL锁的常见误区并发与并行的区别同步与异步的区别I/O密集型与计算密集型啥是GIL锁GIL锁是全局解释器锁的英文缩写GIL锁限制了Python在一个进程里面的多个线程在同一时间点只能运行其中的一个。即使我们计算机有4个核8个核,Python同一进程里面的线程也不能同时跑起来。但是在其他语言是可以的。所以很多人说Python的多线程是个假象CPyth...原创 2020-02-05 19:34:32 · 310 阅读 · 0 评论 -
深入Python并发编程(一)之多线程编程
文章目录一.详解Python的paramiko模块二.详解进程与线程Python的threading模块执行了上下文的切换一.详解Python的paramiko模块1.paramiko模块是用来干啥的?paramiko模块用于进行主机的批量管理,这个模块基于远程ssh来连接服务器,并执行相关操作的。paramiko模块可以实现文件的传送,可以实现跨操作系统传送文件以及接受文件例如我们...原创 2020-02-05 19:33:32 · 464 阅读 · 1 评论 -
【深入理解】Python描述符的使用
文章目录什么是描述符什么是描述符描述符就是一个新式类,我们可以使用描述符去实现一些新的类或者实例,在这个类里边至少要实现__get__(),__set__(),__delete__()中的一个,它还分为数据描述符和非数据描述符,他们的优先级是不一样的。描述符它就是用来代理其他类的属性。先初体验一下class Str(object): def __get__(self, instan...原创 2020-01-29 17:23:06 · 154 阅读 · 0 评论 -
Python:logging模块详解
文章目录logging模块的使用第一种用法(用得较少)第二种用法(用得较多)logging使用时遇到的坑总结logging1=logging模块的使用第一种用法(用得较少)import logginglogging.basicConfig( # 设置保存到哪个文件,默认会输出在屏幕上 filename='logging.log', # 设置日志级别为INFO,默...原创 2020-01-28 11:15:39 · 180 阅读 · 0 评论 -
详解Python的json,pinkle,shelve模块
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。...原创 2020-01-28 10:08:30 · 655 阅读 · 1 评论 -
使用Python做个FTP服务器(超简单)
思路首先客户端与服务端都要先生成socket对象,创建socket实例。然后服务端通过bind函数绑定端口,并进行监听,服务端再使用accept方法进入阻塞状态,等待一个连接的到来客户端使用connect函数通过以元组形式传入一个IP地址与端口号,与服务端建立连接客户端读取用户的输入,我们可以判断一下,如果这串字符以get开头,那么就把get后面的内容也就是文件名赋值给filename...原创 2020-01-24 20:23:44 · 1404 阅读 · 0 评论 -
【深入理解】Python网络编程
文章目录一些网络知识什么是socketsocket内置的方法一个简单的socket案例socket粘包的概念socketserver(进阶)待更新一些网络知识啥是DDOS攻击(洪水攻击),就是一些机器通过伪造IP地址头,不断的去访问(攻击)一个网站,导致网站的崩溃的现象,一个网站能接受的并发量是有限的,通过洪水攻击,十几台机器大量伪造IP地址,就可以搞垮一个网站,所以大企业要建立大规模的集群。...原创 2020-01-24 20:16:49 · 314 阅读 · 0 评论 -
【深入理解】Python面向对象,魔法方法与反射详解
应用:一般情况下,如果我们只是写个脚本,实现一些简单的功能,就使用函数式编程,但是如果我们的代码比较复杂,后期要进行重用,维护等等就使用面向对象编程面向对象编程:面向过程编程:面向对象的特性:封装:封装,其实就是使用构造方法将内容封装到某个具体对象中,然后通过对象直接或者self间接获取被封装的内容继承:面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它...原创 2020-01-20 23:15:10 · 311 阅读 · 0 评论