Python基础部分

python的标准库和第三方库

python的标准库

  1. 内建函数和异常
  • __builtin__模块,定义内建函数,一般不用手动导入
  • exceptions模块,定义内建异常
  1. 操作系统接口
  • os,文件和进程处理
  • os.path,文件名处理
  • time/datetime,时间日期处理
  1. 类型支持
  • string,字符串处理
  • math,数字计算和常量
  • cmath,复数
  1. 正则表达式
  • re,匹配字符串
  1. 语言支持
  • sys,解释器相关参数
  • copy,复制
  1. 使用os模块重命名和删除文件
  • os.listdir函数返回目录中的文件名
  • os.makedirs,os.removedirs函数用于创建和删除目录层
  • os.getcwd,os.chdir函数获得和改变当前工作目录
  • os.mkdir,od.rmdir用于创建/删除目录
  • os.chmod,os.utime修改文件权限和时间
  • os.system()执行操作系统命令
  • os.fork(),返回not pid说明为真;os.wait()调用其它线程

python常用的第三方库

  • Django:开源web开发框架,鼓励快速开发,遵循MVC设计
  • webpy:一个小巧灵活的web框架,简单且功能强大。
  • CherryPy:基于python的web应用程序开发框架
  • TurboGears:基于python的MVC风格的web应用程序框架
  • Twisted:流行的网络编程库,大型web框架。
  • Matplotlib:用python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。
  • NumPy:基于python的科学计算第三方库,提供了矩阵,线性代数,傅里叶变换等的解释器
  • WxPython:python下的GUI编程框架,与MFC的架构相似。
  • Tkinter: python下的界面编程包
  • BeautifulSoup:基于python的HTML/XML解析器。
  • MYSQLdb:用于连接mysql数据库。
  • pygame:基于python的多媒体开发和游戏软件开发模块
装饰器

Q:你是如何理解Python装饰器的?
A:装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,接收一个函数作为参数,然后返回一个新函数,装饰器的返回值也是一个函数对象,其闭包中包含被装饰的函数。有了装饰器,可以提取大量函数中与本身功能无关的类似代码 ,达到代码重用的目的。可应用于插入日志、性能测试、事务处理等方面

单例

单例模式是应用开发过程中最简单同时也是最著名的一种创建型设计模式。单例模式提供了一个类只有一个特定类型的对象的机制。

通常应用于场景为:日志记录、数据库操作等,程序运行时只能生成一个实例,避免对同一资源产生冲突的访问请求。
单例模式的实现 查看文章

生成器

生成器generator
具有一边循环,一边计算的功能,可以不断迭代出下一个元素
详情 查看文章

  • 生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象。
  • 生成器对象,是一个可迭代对象,是一个迭代器
  • 生成器对象,是延迟计算、惰性求值的
进程 线程 协程

Q:简单介绍一个进程 线程 协程:
A:进程是系统进行资源分配和调度的基本单位,是程序的实例例,每个进程之前的数据不互通。
线程是程序执行流的的最小单元,线程不独立拥有资源,他跟同一个进程下的其他线程共享资源。
协程是微线程,跟线程一样,相对独立,有自己的上下文,但线程切换耗时,所以有了协程。

Q:线程和协程差别:
A:线程的切换耗时,协程的切换几乎不耗时。线程的切换由系统控制,协程的切换由当前协程控制。

Q:进程和线程的相同点:
A:都是由系统执行的。

Q:怎么切换协程:
A:Gevent是对greenlet的封装,greenlet通过switch进行协程切换。

Q:线程锁的作用:
A:由于线程之间的资源共享,还有线程之间的时间片轮转,防止可能发生的资源抢夺和脏数据。

Q:多进程和多线程的选择:
A:计算密集型选择多进程
IO密集型选择多线程

操作系统将CPU时间片分配给多个线程,每个线程在指定放到时间片内完成。操作系统不断从一个线程切换到另一个线程执行,宏观上看就好像是多个线程一起执行。

Python中由于全局锁 (GIL)的存在导致,同一时间只有一个获得GIL的线程在跑,其他线程则处于等待状态,这导致了多线程只是在做分时切换,并不能利用多核。

多线程与多进程的区别:(1)多进程中同一个变量各自有一份拷贝在每个进程中,互不影响;(2)多线程中,所有变量都由所有线程共享,任何一个变量都可被任何一个线程修改。线程之间共享数据的最大危险在于多个线程同时更改一个变量,把内容改乱。

Q: 两个独立进程间的通信怎么实现?
A: 队列和管道 查看文章

同步,异步,串行,并行,并发

异步:程序执行完毕之后,不发生等待直接执行下一个任务.我们称其执行的方式是异步执行的
同步:程序执行的时候若有耗时操作,我等待操作完成,继续操作下一个,同步执行

Q:同步机制:
A:并发程序中,各进程对公共变量访问的制约。常见的同步机制有PV操作和管程。
互斥:pv原语操作信号量
有空让进:当没有进程进入临界区执行时,任何进程都可以进入
有限等待:任何进程进入临界区的等待时间都是有限的

Q:简述同步和异步的区别
A:同步是阻塞模式,异步是非阻塞模式。 同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去; 异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

并行:当执行的任务的数量小于或者等于cpu的数量的时候
并发:执行任务数量大于cpu的数量,并发一定是并行
串行:类似于同步
并发,并行,串行

PCB(process control block):
进程控制块
为了描述和管理进程的运行,在OS的核心专门定义了一个数据结构----进程控制块(PCB)

GIL全局锁:
为什么要有这个东西?
对当前线程状态和垃圾回收提供保护。
详细解释

Celery
流程:创建任务,将任务加入消息队列,worker进行消息队列的监听,worker执行,执行结果backend存入配置的数据库中

拷贝
赋值拷贝 , 浅拷贝与深拷贝

示例

赋值拷贝

直接赋值只是传对象的引用而已,相当于两个变量同时指向一个地方,所以不论这两个变量哪一个改变,他们同时指向的地方都会改变。

浅拷贝

使用浅拷贝时,只是拷贝了最外围的对象本身,嵌套的内部元素都只是拷贝了一个引用而已。所以外围元素可以独立改变,内部元素其中一个赋值就会引起全部改变。

深拷贝

深拷贝对外围和内部元素都进行了拷贝对象本身,而不是对象的引用。简而言之,全部复制,相互独立,一套带走
详细解释

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值