随笔分类 - Python基础
学习笔记
摘要:随着之前我们学习的多线程和多进程,但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。随着我们对于效率的追求不断提高,基于单线程来实现并发又成为一个新的课题,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发。这样就可以节
阅读全文
摘要:进程:在已经了解了操作系统中进程的概念后,我们对进程有了一定的了解: 程序是不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,这种执行的程序就称之为进程. 程序和进程的区别就在于: 程序是指令的集合, 它是进程运行的静态描述文本; 进程是程序的一次执行活动,属于动态概念. 在多道编程中
阅读全文
摘要:一、数据共享 展望未来,基于消息传递的并发编程是大势所趋即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。 进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题,应
阅读全文
摘要:一、进程同步(锁) 通过之前的学习,我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打
阅读全文
摘要:仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。由于提供的子模块非常多,为了方便大家归类记忆,我将这部分大致分为四个部分:创建进程部分,进程同步部分,进程池部
阅读全文
摘要:进程:顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。想要了解进程就必须先了解操作系统,老师文章 。 PS:即使可以利用的cpu只
阅读全文
摘要:socketserver模块是基于socket而来的模块,它是在socket的基础上进行了一层封装,并且实现并发等功能。 看看具体用法: x import socketserver #1、引入模块 class MyServer(socketserver.BaseRequestHandler): #
阅读全文
摘要:粘包 粘包现象: TCP属于长连接,当服务端与一个客户端进行了连接以后,其他客户端需要(排队)等待.若服务端想要连接另一个客户端,必须首先断开与第一个客户端的连接。 缓冲区:它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做
阅读全文
摘要:TCP 和 UDP 协议 一、socket层 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的
阅读全文
摘要:一、模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,但其实import加载的模块分为四个通用类别: 使用python编写的代码(.py文件) 已被编译为共享或DLL的C或C++扩展 包好一组模块的包 使用C编写并链接到python解释器的内置
阅读全文
摘要:一、什么是异常处理 程序中的两种异常: 1、语法错误: 空格 缩进以及其他语法规则(一般在语法检测的时候就会报错) 2、逻辑错误:程序整体能编译,但是在运行时,因具体的逻辑出现问题,例如:input的内容转int 3、异常就是程序运行时发生错误的信号,在Python中,错误触发的异常如下:异常发生后
阅读全文
摘要:一、常用的内置方法 1、__new__ 和 __init__: __new__ 构造方法 、__init__初始化函数 1、__new__方法是真正的类构造方法,用于产生实例化对象(空属性)。重写__new__方法可以控制对象的产 生过程。也就是说会通过继承object的new方法返回一个内存空间(
阅读全文
摘要:一、类的描述符 1、property :把装饰的一个方法伪装成一个属性,对属性进行查、改、删 #装饰器返回年纪 import time class Person: def __init__(self,name,birth): self.name = name self.birth = birth @
阅读全文
摘要:一、封装 不想让别人改我的属性,或不想让别人看见,就要使用封装。 广义上的封装:把方法和属性根据类别装到类中 侠义上的封装:私有化的方法和属性 方法、静态变量、实例化变量(对象属性)都可以私有化 所谓的私有化:就是只能在类的内部可见,类的外部是不能访问或查看的 #私有属性 class Goods:
阅读全文
摘要:一,栈与队列的基础知识 1. 栈(stacks)是一种只能通过访问其一端实现数据储存与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征。 2. 队列(queue) 是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行。能够增
阅读全文
摘要:UnboundLocalError: local variable 'count' referenced before assignment 局部变量错误:赋值之前引用的本地变量'count' ,unbound:未绑定,local:局部 ValueError: could not convert s
阅读全文
摘要:昨日复习 派生方法和派生属性 super想使用子类的对象调用父类的方法时,才使用super,注意super方法遵循mro,不能光看括号 super在类里:super().方法名(参数) == 指名道姓 :父类名.方法名(self,参数) 多继承 钻石继承 经典类:Python2 不继承object,
阅读全文
摘要:先讲一个例子: Teacher 也可以定义一个方法,执行Birthday类里面的方法: 总结: 组合就是一个对象引用另一个对象,用它的方法。 继承的类:父类、基类、超类 想继承的类:子类、派生类 讲一个继承的例子: 猫 属性 性别 品种 方法 吃 喝 爬树 狗 属性 性别 品种 方法 吃 喝 看门
阅读全文
摘要:一、组合 表示的一种什么和什么的关系 先来说一说__init__的作用: 总结:__init__方法是实例化必须执行的一步,没有它就毫无意义,更不要说什么实例和类了,也就是说它是类和对象的桥梁! 人狗大战游戏,现在需要增加武器 武器是人的一个属性,比如攻击力,磨损度,价格,名字,品级,技能 增加一个
阅读全文
摘要:一、对象之间的交互 我们创造一个人狗大战 ???那么问题来了,人发起一次攻击,他攻击谁了? 所以我们需要一些交互!(同时完善人狗的攻击) 总结: 交互就是不同类中的方法可以传参和调用,参数可以是对象(代入得就是它的属性字典)。 二、类命名空间与对象、实例的命名空间 创建一个类就会创建一个类的名称空间
阅读全文