本文阅读时长大约为5分钟
今日内容概述:
在浏览器中访问服务器的过程、GIL全局解释器锁、深拷贝、浅拷贝、私有化、模块的导入 。
在浏览器中访问服务器的过程
先去DNS服务器那里去解析域名,得到http服务器ip地址,再进行三次握手,数据传输,四次挥手。
NAT 网络地址转换器
NAT 是在路由器的功能上添加了地址转换
宽带ip每天都在变,不适合做服务器
GIL 全局解释器锁
这个问题和python语言没有关系,是解释器的问题
it’s not easy to remove the GIL. 吉多的声明
同一时刻只允许有一个线程在运行,所以多线程是假的并发,只在 c 语言写的python解释器中有,其他语言写的解释器没有这个问题
多线程比单线程要快
计算密集型:一直不停的计算,使用进程,发挥多核的性能
IO密集型: 有等待的过程 , 使用线程
解决GIL问题的两种解决办法
不使用cpython解释器,使用其他的解释器jpython
python解释器默认是cpython
替换成其他语言的代码执行
明早任务:聊聊python中的多任务
深拷贝、浅拷贝
什么是深拷贝
在复制的时候直接把数据拷贝一份
深拷贝测试时不会影响原来的数据
什么是浅拷贝
在复制的时候仅仅只复制引用,而数据共用一份
浅拷贝可以节约资源
列表的深拷贝、浅拷贝
浅拷贝拷贝的是引用 新建一个空间,内容拷贝引用
深拷贝拷贝的是数据 新建一个空间,列表里面列表引用指向的数据也会拷贝一份
元组的深拷贝、浅拷贝
元组中存储不可变类型数据:copy()、deepcopy() 拷贝引用,而不会拷贝数据
元组中存储可变类型数据:copy() 拷贝引用,deepcopy() 拷贝数据
如果用 copy()、deepcopy() 对一个都是不可变类型的数据进行拷贝,那么它们结果相同,都是引用
如果拷贝的是一个拥有不可变类型的数据,即使元组是最外层,那么 deepcopy() 依然是深拷贝,copy() 还是指向引用。
字符串、切片、字典的深拷贝浅拷贝
切片是浅拷贝
字典中存储的都是 key 所对应 value 的引用
字典的 copy() 是浅拷贝
私有化
xx:公有变量
_x:单前置下划线,私有属性和方法,from 模块名 import * 禁止导入,类对象和子类可以访问
__xx:双前置下划线,避免与子类中的属性命名冲突,无法再外部直接访问(名字重整所以访问不到 “ 重整指的是会在属性名字前加上类名”)
_xx_:双前后下划线,用户名字空间的魔法对象或属性。按公有属性处理,可以被继承。不要自己发明这样的名字。
xx__: 但后置下划线,用于避免与python关键词的冲突。
父类中属性名为的,子类不继承,子类不能访问
如果在子类中向赋值,那么会在子类中定义的一个与父类相同名字的属性
的变量、函数、类在使用时都不会被导入
导入模块
import xxx
import xxx as yyy
from xxx import *
from xxx import zzz
from xxx import zzz as ddd
from imp import reload # 重新导入模块
sys.path:可以以列表的形式列出导入模块时查找的各个路径
今日内容仍然以概念为主,所有仍然昏昏欲睡,大体是记住了,不过总感觉少点细节没有记住,回头再细细看看。
- End -
领取专属 10元无门槛券
私享最新 技术干货