自定义博客皮肤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 102

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

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

2021-07-31 11:10:19 396

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

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

2021-07-31 11:09:04 141

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

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

2021-07-31 11:08:08 659

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

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

2021-07-31 11:06:59 200

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

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

2021-07-31 11:05:52 84

原创 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 115

原创 30、异常处理

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

2021-07-31 11:02:48 66

原创 29、元类

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

2021-07-31 11:02:07 46

原创 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 55

原创 28、反射、内置方法

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

2021-07-30 16:21:52 36

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

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

2021-07-30 16:21:14 47

原创 26、多态与鸭子类型

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

2021-07-30 16:20:02 56

原创 25、继承与派生

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

2021-07-30 16:18:21 56

原创 24、封装

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

2021-07-30 16:17:38 45

原创 23、面向对象编程

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

2021-07-30 16:16:40 47

原创 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 78

原创 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 127

原创 20、模块

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

2021-07-30 16:14:30 71

原创 19、面向过程编程

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

2021-07-30 16:13:46 743

原创 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 42

原创 16 迭代器

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

2021-07-07 20:14:36 49

原创 15 装饰器

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

2021-07-07 20:14:04 32

原创 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 31

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

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

2021-07-07 20:12:50 38

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

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

2021-07-07 20:12:04 79

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

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

2021-07-07 20:11:28 59

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

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

2021-07-07 20:10:13 37

原创 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 53

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

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

2021-07-07 20:08:35 276

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

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

2021-05-31 20:05:08 118

原创 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 66

原创 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 104

原创 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 81

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

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

2021-05-31 19:44:11 37

原创 02编程语言与Python介绍

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

2021-05-31 19:42:45 165

原创 01计算机核心基础

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

2021-05-31 19:38:44 40

空空如也

空空如也

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

TA关注的人

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