自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 37、python并发编程之协程

目录: 一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二 一 引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长或有一个优先级更高的程序替代了它 p

2021-07-31 11:11:25 188

原创 36、python并发编程之多线程(操作篇)

目录: 一 threading模块介绍 二 开启线程的两种方式 三 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别 四 练习 五 线程相关的其他方法 六 守护线程 七 Python GIL(Global Interpreter Lock) 八 同步锁 九 死锁现象与递归锁 十 信号量Semaphore 十一 Event 十二 条件Condition(了解) 十三 定时器 十四 线程queue 十五 Python标准模块–concurrent.futures 一 threading模块介绍 m

2021-07-31 11:10:19 483

原创 35、python并发编程之多线程(理论篇)

一 什么是线程 二 线程的创建开销小 三 线程与进程的区别 四 为何要用多线程 五 多线程的应用举例 六 经典的线程模型(了解) 七 POSIX线程(了解) 八 在用户空间实现的线程(了解) 九 在内核空间实现的线程(了解) 十 用户级与内核级线程的对比(了解) 十一 混合实现(了解) 十二 线程小故事 一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一.

2021-07-31 11:09:04 254

原创 34、python并发编程之多进程(操作篇)

目录: 一 multiprocessing模块介绍 二 Process类的介绍 三 Process类的使用 四 守护进程 五 进程同步(锁) 六 队列(推荐使用) 七 管道 八 共享数据 九 信号量(了解) 十 事件(了解) 十一 进程池 1、multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分需要使用多进程。Python提供了multiprocessing。 multiproces

2021-07-31 11:08:08 895

原创 33、python并发编程之多进程(理论篇)

目录: 一 什么是进程 二 进程与程序的区别 三 并发与并行 四 同步\异步and阻塞\非阻塞(重点) 五 进程的创建(了解) 六 进程的终止(了解) 七 进程的层次结构 八 进程的状态 九 进程并发的实现(了解) 一 什么是进程 进程:正在运行的一个过程或者说一个任务。而负责执行任务则是cpu。 举例:(单核+多道,实现多个进程的并发执行) egon在一个时间段内有很多任务要做:python备课的任务,写书的任务,交女朋友的任务,王者荣耀上分的任务, 但egon同一时刻只能做一个任务(cpu同一时间只

2021-07-31 11:06:59 306

原创 32、python并发编程之背景知识

目录: 一 引子 二 为什么要有操作系统 三 什么是操作系统 四 操作系统与普通软件的区别 五 操作系统发展史 六 总结视频链接: 一 引子 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统 二 为什么要有操作系统 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打

2021-07-31 11:05:52 144

原创 31、网络编程

一 客户端/服务端架构 二 osi七层协议 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 十 什么是粘包 十一 解决粘包的low处理方法 十二 高手解决粘包的方法 十三 认证客户端的链接合法性 十四 socketserver实现并发 一 客户端/服务端架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)

2021-07-31 11:04:17 185

原创 30、异常处理

目录: 什么是异常 异常处理 何时使用异常处理 一 什么是异常 异常是程序发生错误的信号。程序一旦出现错误,便会产生一个异常,若程序中没有处理它,就会抛出该异常,程序的运行也随之终止。在Python中,错误触发的异常如下 而错误分成两种,一种是语法上的错误SyntaxError,这种错误应该在程序运行前就修改正确 >>> if File "<stdin>", line 1 if ^ SyntaxError: invalid syntax 另一类

2021-07-31 11:02:48 134

原创 29、元类

元类介绍 class关键字创建类的流程分析 自定义袁磊控制类StanfordTeacher的创建 自定义元类控制类StanfordTeacher的调用 再看属性查找 作业 一 元类介绍 什么是元类呢?一切源自于一句话:python中一切皆为对象。让我们先定义一个类,然后逐步分析 class StanfordTeacher(object): school='Stanford' def __init__(self,name,age): self.name=name

2021-07-31 11:02:07 107

原创 18 函数递归

函数递归调用介绍 回溯与递推 一、函数递归调用介绍 函数不仅可以嵌套定义,话可以桥套调用,即在调用一个函数的过程中,函数内部又调用另一个函数,而函数的递归调用指的是在调用一个函数的过程中又直接或间接地调用该函数本身 例如,在调用f1地过程中,又调用f1,这就是直接调用函数f1本身 def f1(): peint('from f1') f1() f1() 在调用f1的过程中,又调用f2,而在调用f2的过程中又调用f1,这就是间接调用f1函数本身 def f1(): print('fr

2021-07-31 11:00:04 124

原创 28、反射、内置方法

一、反射 python是动态语言,而反射(reflection)机制被视为动态语言的关键。 反射机制指的是在程序的运行状态中 对于任意一个类,都可以知道这个类的所有属性和方法; 对于任意一个对象,都能够调用他的任意方法和属性。 这种动态获取程序信息以及动态调用对象的功能称为反射机制。 在python中实现反射非常简单,在程序运行过程中,如果我们获取一个不知道存有何种属性的对象,若想操作其内部属性,可以先通过内置函数dir来获取任意一个类或者对象的属性列表,列表中全为字符串格式 >>> cl

2021-07-30 16:21:52 97

原创 27、绑定方法与非绑定方法

一、绑定方法与非绑定方法 类中定义的函数分为两大类:绑定方法和非绑定方法 其中绑定方法又分为绑定到对象的对象方法和绑定到类的类方法。 在类中正常定义的函数默认是绑定到对象的,而为某个函数加上装饰器@classmethod后,该函数就绑定到了类。 我们在之前的章节中已经介绍过对象方法了,本节我们主要介绍类方法。类方法通常用来在__init__的基础上提供额外的初始化实例的方式 # 配置文件settings.py的内容 HOST='127.0.0.1' PORT=3306 # 类方法的应用 import se

2021-07-30 16:21:14 116

原创 26、多态与鸭子类型

多态与多态性 多态指的是一类事物有多种形态,比如动物有多种形态:猫、狗、猪 class Animal: #同一类事物:动物 def talk(self): pass class Cat(Animal): #动物的形态之一:猫 def talk(self): print('喵喵喵') class Dog(Animal): #动物的形态之二:狗 def talk(self): print('汪汪汪') class Pig(Animal):

2021-07-30 16:20:02 124

原创 25、继承与派生

继承介绍 继承与抽象 属性查找 继承的实现原理 菱形问题 继承原理 深度优先和广度优先 python Mixin机制 派生与方法重用 组合 一 继承介绍 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,新建的类可称为子类或派生类,父类又可称为基类或超类 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承

2021-07-30 16:18:21 127

原创 24、封装

引入 隐藏属性 开放接口 隐藏数据接口 隐藏函数接口 property 一 引入 面向对象编程有三大特性:封装、继承、多态,其中最重要的一个特性就是封装。封装指的就是把数据与功能都整合到一起,听起来是不是很熟悉,没错,我们之前所说的”整合“二字其实就是封装的通俗说法。除此之外,针对封装到对象或者类中的属性,我们还可以严格控制对它们的访问,分两步实现:隐藏与开放接口 二 隐藏属性 Python的Class机制采用双下划线开头的方式将属性隐藏起来(设置成私有的),但其实这仅仅只是一种变形操作,类中所.

2021-07-30 16:17:38 109

原创 23、面向对象编程

对象的概念 类与对象 面对对象编程 类的定义与实例化 属性访问 类属性与对象属性 属性查找顺序与绑方法 小结 一、对象的概念 ”面向对象“的核心是“对象”二字,而对象的精髓在于“整合“,什么意思? 所有的程序都是由”数据”与“功能“组成,因而编写程序的本质就是定义出一系列的数据,然后定义出一系列的功能来对数据进行操作。在学习”对象“之前,程序中的数据与功能是分离开的,如下 # 数据:name、age、sex name = 'lili' age = '18' sex = 'female' # 功

2021-07-30 16:16:40 113

原创 22、软件开发的目录规范

软件开发的目录规范 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要。软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |-- core/ | |--core.py | |-- api/ | |-- api.py | |-- db/ | |-- db_handle.py | |--lib/ | |-- common.py | |--conf/ | |-- settings.py | |-- run.py |--

2021-07-30 16:16:04 163

原创 21、包的介绍与使用

包的介绍 包的使用 导入包与__init__.py 绝对导入与相对导入 from包import* 一、包的介绍 随着模块数目的增多,把所有模块不加区分地放到一起也是极不合理的,于是python为我们提供了一种把模块组织到一起的方法,即创建一个包。包就是一个含有__init__.py文件的文件夹,文件夹内可以组织子模块或子包,例如 pool/ |——__init__.py |——futures | |——__init__.py | |——process.py | |——thread.py └── vers

2021-07-30 16:15:29 226

原创 20、模块

http://pypi.douban.com/simple/ 模块介绍 模块的使用 import语句 from-import语句 其他导入语法(as) 循环导入问题 搜索模块的路径与优先级 区分py文件的两种用途 编写一个规范的模块 一、模块介绍 在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能,如果把开发程序比喻成制造一台电脑,编写模块就像是在制造电脑的零部件,准备好零部件后,剩下的工作就是按照逻辑把它们组装到一起 将程序模块化会使

2021-07-30 16:14:30 142

原创 19、面向过程编程

编程范式 面向过程 函数式 匿名函数与lambda map、reduce、filter 一、编程范式 很多初学者在了解了一门编程语言的基本语法和使用之后,面对一个’开发需求‘时仍然会觉得无从下手、没有思路/套路,本节主题“编程范式”正是为了解决该问题,那到底什么是编程范式呢? 编程范式指的就是编程的套路,打个比方,如果把编程的过程比喻为练习武功,那编程范式指的就是武林中的各种流派,而在编程的世界里常见的流派有:面向过程、函数式、面向对象等,本节我们主要介绍面向过程与函数式。 在正式介绍前,我们需要强调:

2021-07-30 16:13:46 892

原创 17 生成器

一、生成器与yield 若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的返回值即生成器对象 >>> def my_range(start,stop,step=1): ... print('start...') ... while start < stop: ... yield start ... start+=step ... print('end...') ... >>>

2021-07-07 20:15:22 88

原创 16 迭代器

一、迭代器介绍 可迭代对象 迭代器对象 二、for循环原理 三、迭代器的优缺点 优点 缺点 一 迭代器介绍 迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次”迭代“,而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代 while Ture: msg = input('>>>:').strip() print(msg) 下述while循环才是一个迭代过程,不仅满足重复,而且以每

2021-07-07 20:14:36 99

原创 15 装饰器

一、装饰器介绍 1.1 为什么要用装饰器 1.2 什么是装饰器 二、装饰器的实现 2.1 无参装饰器的实现 2.2 有参装饰器的实现 一、装饰器介绍 为何要用装饰器 软件的设计应该遵循开放封闭原则,即对扩展是开放的,而对修改是封闭的。对扩展开放,意味着有新的需求或变化时,可以对现有的代码进行扩展,以适应新的情况。对修改封闭,意味着对象一旦设计完成,就可以独立完成其工作,而不要对其进行修改。 软件包含的所有功能的源代码以及调用方式,都应该避免修改,否则一旦改错,则极有可能产生连锁反应,最终导致程序崩溃

2021-07-07 20:14:04 76

原创 14 Python快速入门--函数对象和闭包

一 函数对象 1.1 函数可以被引用 1.2 函数可以作为容器类型的元素 1.3 函数可以作为参数传入另外一个函数 1.4 函数的返回值可以是一个函数 二 闭包函数 2.1 闭与包 2.2 闭包的用途 一 函数对象 函数对象指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用,我们如下 1、函数可以被引用 >>> def add(x,y): ... return x+y ... >>> func=add >>&g..

2021-07-07 20:13:32 84

原创 13 Python快速入门--名称空间与作用域

一、名称空间 ​ 1.内建名称空间 ​ 2、全局名称空间 ​ 3、局部名称空间 二、作用域 ​ 1、全局作用域 ​ 2、作用域与名字查找的优先级 一、名称空间 名称空间即存放名字与对象映射/绑定关系的地方。对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系 在程序执行期间最多会存在三种名称空间 1.内建名称空间 伴随python解释器的启动/关闭而产生/回收,因而是第一个被加载的名称空间,用来存放一些内置的名字,比如内建函数名 >

2021-07-07 20:12:50 91

原创 12 Python快速入门--函数的参数

一 形参与实参介绍 二 形参与实参的具体使用 1.位置参数 2.关键字参数 3.默认参数 4.可变长度的参数 可变长度的位置参数 可变长度的关键字参数 5.命名关键字参数 6.组合使用 一 形参与实参介绍 函数的参数分为形式参数和实际参数,简称形参和实参: 形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。 实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合: #1:实参是常量 res=my_min(1,2) #2:实参是变量 a=1

2021-07-07 20:12:04 138

原创 11 Python快速入门--函数的基本使用

“”" 1 什么是函数 函数就是盛放功能(一系列代码)的容器 定义函数就是造出了一个工具 事先准备工具的过程->函数的定义 遇到应用场景拿来就用->函数的调用 2 为何要用函数 不用函数写出的代码问题是: 1 程序的组织结构不清晰,可读性差,可维护性差 2 可扩展性差 3 如何用函数 原则: 先定义 后调用 定义函数的语法: def 函数名(参数1,参数2,参数3,...): 代码1 代码2 代码3 return 值 调用函数语法: res = 函数名(值1,

2021-07-07 20:11:28 127

原创 10 Python快速入门--文件处理

文件操作 操作系统 windows mac linux 双击文件 硬盘转 磁头读取数据 保存文件 硬盘转 磁头写入数据 我们在操作文件的时候其实操作的是硬盘 '''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口''' 绝对路径与相对路径 绝对路径 非常详细的路径描述 无论什么人什么位置都可以找到 相对路径 有一个参考 只有对应的人才可以找到 # 一、文件处理 # res =

2021-07-07 20:10:13 94

原创 09 Python快速入门--字符编码

字典与集合练习题实操 字符编码 字符编码发展史 字符编码实操 字典与集合练习题详解 1.字典练习题 1.将列表中大于等于66的元素放入字典k1键对应的列表中 将列表中小于66的元素放入字典k2键对应的列表中 nums = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] dic = { 'k1': [], 'k2': [] } for i i

2021-07-07 20:09:32 115

原创 08 Python快速入门--基本数据类型与内置方法

数字类型int与float 定义 类型转换 使用 字符串 定义 类型转换 使用 优先掌握的操作 需要掌握的操作 了解操作 列表 定义 类型转化 使用 优先掌握的操作 需要掌握的操作 了解操作 元组 作用 定义方法 类型转换 使用 字典 定义 类型转换 使用 优先掌握的操作 需要掌握的操作 集合 作用 定义 类型转换 使用 关系运算 去重 其他操作 练习 可变类型与不可变类型 数据类型总结 一、数字类型int、float 定义 # 定义: # 整形int的定义

2021-07-07 20:08:35 357

原创 07.python语法入门--流程控制

分支结构 什么是分支结构 为什么要用分支结构 如何使用分支结构 if语法 if应用案例 循环结构 什么是循环结构 为什么要用循环结构 如何使用循环结构 while循环语法 while循环应用案例 for循环语法 for循环应用案例 分支结构 什么是分支结构 # 分支结构就是根据条件判断的真假去执行不同分支对应的子代码 为什么要用分支结构 # 人类某些时候需要根据条件老决定做什么事情,比如:如果今天下雨,就带伞 # 所以程序中必须有相应的机制来控制计算机具备人的这种判断能力

2021-05-31 20:05:08 189

原创 06.python语法入门--与用户交互、运算符

与用户交互 输入 input # python2与python3的区别 '''python3''' # 将获取到的用户输入赋值给变量名res res = input('please input your username>>>:') print(res, type(res)) # id返回一串数字(可以看成是内存地址) type返回变量值的数据类型 '''input获取到的用户输入都会存成字符串形式''' '

2021-05-31 19:47:12 127

原创 05.python语法入门--垃圾回收机制

# (1)垃圾回收机制GC # 引用计数 # x = 10 # 值10引用计数为1 # y = x # 值10引用计数为2 # # y = 1000 # 值10引用计数减少为1 # del x # 值10引用计数减少为0 # 分代回收-》解决引用计数效率问题(存活时间越长扫描频率越低) # 标记/清除-》解决引用计数有可能会发生内存泄漏(除了可以访问的标记,其余的应清除) # ps:如果我们想要回收python程序的内存空间,只能通过把变量值的引用计数减为0的方式实现 # (2)小整数

2021-05-31 19:46:00 169

原创 04.python语法入门--基本数据类型

# python是一门解释型的、强类型的、动态语言 # 一:数字类型 # 1.1 整型int:记录人的年龄、等级、号码、个数 # age = 18 # print(type(age)) # 1.2 浮点数float:记录人的薪资、身高、体重 # salary = 3.7 # print(type(salary)) # x = 18 # y = 3.7 # print(x + y) # print(x > y) # 二:字符串:记录描述性质的状态,比如名字、一段话、性别 # x = "两个黄鹂

2021-05-31 19:45:08 148

原创 03.python语法入门--注释、变量

注释 """ 多行注释加在整个py文件的开头 用来对该py文件进行一个整体性的说明 通常一个py中只有一个多行注释 """ # 这是一行贼溜的代码 print("hello") # 这是一行贼溜的代码 # ctrl+?:批量加减少注释 # print('hello1') # print('hello2') # print('hello3') print('end') """ 总结:注释的两种用途 1、对代码进行注解说明,增强代码的可读性 2、注释掉暂时不想运行的代码,调试 """ 变量 """

2021-05-31 19:44:11 80

原创 02编程语言与Python介绍

编程语言分类 机器语言:直接用计算机能理解的二进制指令去编写程序,是直接在控制计算机硬件 ​ 优点:运行效率高 ​ 缺点:开发效率低 ​ 1.开发一个简单的小功能都要哟个到非常多条数的二进制指令 ​ 2.二进制指令非常难记忆 汇编语言:用英文标签取代二进制指令去编写程序,也直接控制计算机硬件 ​ 只解决了机器语言难记忆的问题 高级语言:用人类能理解的表达方式去编写程序 ​ 编译型:c、go ​ 源代码(人话)----------编译器----------计算机能理解的二进制指令 ​

2021-05-31 19:42:45 402

原创 01计算机核心基础

编程语言介绍 引入: python是一门编程语言 编程语言的本质就是一门语言 语言是一种事物与另外一种事物沟通的工具 所以说编程语言也是一种事物与另一种事物沟通的工具 人-----------编程语言---------------计算机 人为何要与计算机沟通? 在IT领域计算机是人类的奴隶 人与计算机沟通的目的就是为了奴役计算机 什么是编程?(翻译官) 两个环节 1.把做事的步骤给想清楚了(2/3时间) 2.用计算机能听懂的语言也就是编程语言把做事的步骤给翻译下来(1/3时间.

2021-05-31 19:38:44 81

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除