深拷贝与浅拷贝

import copy

浅拷贝:将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。copy.copy()

深拷贝:将一个对象拷贝到另一个对象中,新开辟了一个空间,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。copy.deepcopy()

进程、线程、协程

进程process:资源分配的最小单位,一个可执行的程序被加载到内存中。拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度。

多进程应用于CPU密集,进程间通信的方式:队列queue、管道pip

线程Thread:操作系统调度的最小单位,进程内的一个执行单元,拥有自己独立的堆和栈,共享堆,不共享栈,也有操作系统调度。线程保存到CPU的栈中

多线程应用于IO密集。IO操作:将硬盘上、网络上的数据进行读写操作

协程Coroutine:又称微线程,纤程。单线程下实现并发效果,可以保留上次执行位置,遇到IO自动切换。协程保存在自己的栈。

协程优点:

  1. 协程的切换开销更小,属于程序级别的切换,操作系统完全感知不到,因而更加轻量级

  2. 单线程内就可以实现并发的效果,最大限度地利用cpu

协程缺点:

  1.协程的本质是单线程下,无法利用多核,可以是一个程序开启多个进程,每个进程内开启多个线程,每个线程内开启协程

  2.协程指的是单个线程,因而一旦协程出现阻塞,将会阻塞整个线程

协程常用库:greenlet框架(封装yield的基础库)、gevent(基于greenlet的高级库)。

IO多路复用:socketserver,多个客户端连接,单线程下实现并发效果

IO多路复用机制:select、poll、epoll

# select linux下默认最大连接数1024,监控数量有限,无法知道哪个socket链接活跃,
# poll 在select基础上没有监控数量限制,
# epoll 没有监控数量限制并且能知道哪个socket链接有活跃

os和sys模块

os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;
sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

python垃圾回收机制

引用计数、标记清除、分代回收

引用计数:当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1。当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。

标记清除:基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点,以引用为边构成的图,把所有可以访问到的对象打上标记,然后清扫一遍内存空间,把所有没有标记的对象释放

分代回收:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。,那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长。

readline、readlines、read

readline:一行一行的读,底层是迭代器原理,适合大文件读取

readlines:读取整个文件

read:从当前位置起读取,一般用于小文件读取

 

最新文章

  1. 用HTML实现凸(凹)起的立体效果的表格
  2. UITableView中的cell的优化
  3. MYSQL双主故障解决实例。
  4. CSS实现垂直水平居中
  5. How to get the date N days ago in Python
  6. Windows Phone 8 通过一个app启动另一个app
  7. SQL生成随机字符串
  8. ThinkPhp框架:父类及表单验证
  9. JavaSE(十)之Map总结
  10. js登录,回车登录
  11. J2EE进阶(十二)SSH框架整合常见问题汇总(三)
  12. Java进阶篇 设计模式之十四 ----- 总结篇
  13. NIO原理及案例使用
  14. PyCharm 如何新建Django工程项目
  15. codevs 1082 线段树练习3 (线段树)
  16. 客户端调用rcf库 时,返回值千万不要用auto
  17. JAVA包装类介绍(一)(包装类、基本类型数据)
  18. 第38次Scrum会议(12/4)【欢迎来怼】
  19. IDEA基于maven整合SSM
  20. 亿级日PV的魅族云同步的核心协议与架构实践(转)

热门文章

  1. JS 测试 Prototype
  2. 教你如何在5分钟轻松部署squid正向代理
  3. Swoole Redis 连接池的实现
  4. 获取windows操作系统所有用户
  5. CSAPP lab1——位运算
  6. 关于hover与after,before已及first-letter,first-line的联用
  7. PHP SimpleXMLElement::__toString SimpleXML 函数
  8. 使用NodeJS模块-NodeJS官方提供的核心模块
  9. Android 多选列表对话框 setMultiChoiceItems
  10. Ubantu 安装SSH