自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python之路---并发编程之线程&线程池与进程池

 两个关键词:线程,进程/池池:可以将其理解为一种容器,有其固定的大小什么时候用线程池/进程池,分两个问题讨论1.什么时候用池:当程序中的任务并发数远远大于计算机的承受能力时,就应该用池的概念将开启的进程数或者线程数限制在计算机的承受范围之内2.用什么样的池:用进程池还是线程池取决于程序的类型,对于IO密集型--->线程,对于计算密集型--->进程两个概念...

2018-09-10 12:04:34 638

转载 python之路---表的相关&数据类型

MySQL拥有不同的表类型,而表中的数据类型也有所不同数值类型整数类型注意1.为数值类型指定宽度时,限制的仅仅是查询结构的显示宽度,而不是存储宽度几个例子1.有符号create table t1(n tinyint);insert into t1 values(-129),(-128),(127),(128);默认有符号,超过范围仍然可以存储,但是数值...

2018-09-08 23:03:43 161

原创 python之路---MySQL&表的相关操作

与表相关的基本概念什么是表MySQL中的表类似于文件,其内的一行数据叫做记录,记录所对应的标题称之为字段cid和caption就是表字段,下面的一行行内容就是记录存储引擎介绍与普通的文件一样,MySQL的表也有各种各样的类型,表的类型不同,所对应的存取机制也不同。存储引擎就是存储数据,读取数据,查询数据,建立索引的实现方法,可以将其理解为是存储和操作表的类型MySQL...

2018-09-08 21:33:26 199

原创 python之路---MySQL&库的相关操作

系统数据库information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象 mysql: 授权库,主要存储系统用户的权限信息test: MySQL数据库系统自动...

2018-09-08 17:19:53 177

原创 python之路---MySQL&基础

数据库数据库本质就是一个C/S架构的套接字软件,用于解决用文件存储数据而带来的问题(不仅仅是存取效率低的问题)一个程序的所有组件是不可能运行在同一台机器上的,如果这样,这个程序就完全受限于一台机器(这个机器坏掉,整个程序就没有办法执行了),再者,一台机器的性能有限,这就导致了程序的运行效率受到了物理水平的限制对于提升计算机的性能有两种方法从垂直面提升,不断的给计算机更新硬件---...

2018-09-08 16:39:09 113

原创 python之路---并发编程之线程&死锁现象与递归锁/Event/线程Queue

死锁现象两个或两个以上的进程或线程在执行任务的过程中,因为争抢资源而发生相互等待的现象class MyThread(Thread): def run(self): self.f1() self.f2() def f1(self): lock_1.acquire() print('%s拿到1号锁' % se...

2018-09-07 15:48:37 184

原创 python之路---并发编程之线程&GIL

什么是GIL'''定义:In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPy...

2018-09-07 14:22:10 188

原创 python之路---并发编程之线程&守护线程/线程互斥锁/信号量

守护线程两个关键词:守护/线程守护:伴随,线程:本质也是一种线程守护线程会随着该进程内的所有非守护线程结束而结束。即,守护线程是守护着整个进程的运行周期怎么用和开启守护进程的方式一样,在start()之前设置daemon=Trueimport timefrom threading import Threaddef foo(name): print('...

2018-09-06 14:52:41 250

原创 python之路---并发编程之线程&开启线程的两种方式

线程线程是操作系统中能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位一个线程指的是一个进程中单一顺序的控制流一个进程可以开启多条线程,多个线程可以并发执行多个任务注意1.进程不是一个执行单位,进程是一个资源单位2.每个进程自带一个线程,线程才是CPU上的执行单位3.python无法利用多核优势,意味着一个进程下的多个线程无法实现并行进程 vs...

2018-09-06 14:12:32 357

原创 python之路---并发编程之进程&生产者与消费者模型

三个关键词:消费者/生产者/模型模型:可以理解为用于解决一类问题的统一方法/模板生产者:比喻的是在程序中负责产生数据的任务消费者:比喻的是在程序中负责处理数据的任务实现生产者 ------> queue < ------ 消费者 (通过队列进行交互,实现解耦和)好处实现了生产者与消费者的解耦和,生产者可以不断的生产,消费者可以不断的消费,平衡了生产者的生产...

2018-09-06 13:24:45 649

原创 python之路---并发编程之进程&IPC

IPC:进程间的通信两种实现方式管道:pipe队列:queue(其实就是pipe+lock)注意:两者实际上都是内存空间,不要往里面放入大数据,只能放数据量较小的消息 IPC所解决的问题1.当多个任务并发的去修改共享数据,就可能会造成数据错乱,我们通过加互斥锁使多个任务对共享数据的操作由并发变为“串行”,从而保证了共享数据的安全,而当出现需要修改多个共享数据的需求时,...

2018-09-06 10:28:06 286

原创 python之路---并发编程之进程&互斥锁

互斥锁将多个任务对修改共享数据的操作由并发变为“串行”没有互斥锁的情况下# json文件{"count": 2}# 执行文件import osimport timeimport jsonimport randomfrom multiprocessing import Processdef check(): with open("a.json","r...

2018-09-05 15:50:27 212

原创 python之路---并发编程之进程&僵尸进程/孤儿进程/守护进程

僵尸进程子进程在结束之后,释放掉其占用的绝大部分内存空间以及cpu等资源,但是会留下一个称为僵尸进程的数据结构(包含子进程的pid),等待父进程处理。这种情况下的僵尸进程是无害的(待所有的子进程结束后,父进程会统一向操作系统发送回收子进程pid的请求,或者使用join(),其内部也拥有wait()方法),但是,如果父进程是一个死循环,不断的创造子进程,而又不发送回收请求,这就造成了大量的pi...

2018-09-05 14:50:31 873

原创 python之路---并发编程之进程&进程对象相关的属性或方法

join()import timefrom multiprocessing import Processx = 1def task(name, num): print('%s is running' % name) global x x = 0 time.sleep(num) print('%s is done' % name)if ...

2018-09-05 13:46:49 157

原创 python之路---并发编程之进程&开启进程的两种方式

什么是进程进程是指一个程序在一个数据集上的动态执行过程(程序执行过程的抽象)进程包含程序:我们通过程序来描述一个进程所要执行的内容以及如何执行数据集:数据集代表程序在执行过程中所需要的资源进程控制块:用于描述进程的外部特征,记录进程的执行过程,系统可以用来控制,管理进程,也是操作系统感知进程存在的唯一标识进程执行的三种状态:阻塞/运行/就绪1.进程执行过程中出...

2018-09-05 12:08:11 1722

原创 python之路---并发编程之操作系统

三个概念串行:一个任务完完整整的执行完,才执行下一个任务(不能片面的理解为:任务一个一个的执行)并发:多个任务看起来像同时进行(单核也能实现)并行:真正意义上的多个任务同时进行(只有多核才能实现) 什么是进程进程源自操作系统,是操作系统最核心的概念,进程是一个程序在一个数据集上的动态执行过程(是正在运行程序的一个抽象)进程,包括三个方面1.程序:我们通过程序来描述...

2018-09-04 15:22:40 124

原创 python之路---socketserver模块

通过socketserver模块实现套接字并发基于TCP协议的套接字可以分为两个阶段:链接循环与通信循环,与之对应的,socketserver模块中有两个类,server类用于解决链接问题,request类用于解决通信问题Server端import jsonimport structimport subprocessimport socketserverclass My...

2018-09-04 13:48:53 704

原创 python之路---网络篇之socket

什么是socketsocket是应用层与传输层之间(TCP/IP通信协议)的中间软件抽象层,它是一组接口,将复杂的TCP/IP等协议隐藏在简单的接口之后,我们只要使用socket去编程,自然而然就是遵循TCP/UDP协议的。两个家族基于文件型的(AF_UNIX)与基于网络型的(AF_INET) 套接字工作流程要使用套接字,肯定要知道其工作流程基本模板# ...

2018-09-03 15:56:05 252

原创 python之路---网络基础一

两个架构:C/S和B/S(B/S也是C/S的一种)C/S架构:Client --------基于网络通信---------ServerB/S架构:Browser -----基于网络通信---------Server服务端应该遵循的原则:1.稳定运行(网络,硬件,服务端的操作系统,服务端的应用软件),一直对外提供服务2.绑定固定的IP以及port3.支持并发无论是C...

2018-08-29 15:40:54 242

原创 python之路---面向对象之单例模式

什么是单例模式基于某种实现方式,实例化产生的多个对象是同一个(指向同一个内存地址)--->以节省内存 实现方式一:通过类绑定方法import settingclass MySql: def __init__(self, ip, port): self.ip = ip self.port = port @classme...

2018-08-28 14:03:43 233

原创 python之路---异常处理

何为异常异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,该异常就会被抛出,程序的执行也随着终止异常包含三个部分:      1.traceback 异常的最终信号      2.异常的类型      3.异常的信息错误分为两大类:      1.语法上的错误      2.逻辑上的错误 为什么要进行异常处理   避免程...

2018-08-27 17:03:32 163

原创 python之路---面向对象之元类

什么是元类在python中我们通过关键字class来定义/创建一个类class People: def __init__(self, name, age): self.name = name self.age = ageobj1 = People('bob', 32)我们通过调用(实例化)类People产生了obj1这个对象,而pyt...

2018-08-27 16:13:57 173

原创 python之路---面向对象之反射

isinstance() 与 issubclass():isinstance():用于判断一个对象是否为一个类的实例python中说一切皆对象,那么我们判断一个变量是否为某个数据类型的时候,就可以使用isinstance()L = [1,2,3]print(isinstance(l,list))#True#注:L是list这个类的一个实例对象,L=[1,2,3]的本质是L =...

2018-08-23 13:51:04 243

原创 python之路---面向对象之绑定方法与特性property

绑定方法:概念:绑定给谁,就应该由谁调用,由谁调用就将其作为第一个参数自动传入分类:绑定给对象的--->在类内定义的函数,没有被装饰器修饰过的,默认就是绑定给对象使用的     绑定给类的  ---->在类内定义的函数,被装饰器classmethod装饰过的就是绑定给类使用的 注意:绑定给类的,就应该由类来调用,但是对象也可以调用,只不过自动传入的仍然是类    ...

2018-08-22 20:48:52 132

原创 python之路---面向对象之封装

什么是封装# 封:属性是对外隐藏,对内开放的(在类的内部可以直接访问,类的外部无法直接访问)# 装:申请一个名称空间,往里面装入一系列的属性/名字# class People:# __country = 'china' #变形为_People__country# def __init__(self,name,age,sex):# self._...

2018-08-21 15:37:14 247

原创 python之路---面向对象之多态

什么是多态: 一种事物具有多种形态,如水具有液态水,气态水......多态性:  多态性分为动态多态性与静态多态性       静态多态性:任何数据类型都可以使用运算符+进行运算,而运算的结果是不同的(运算符的意义取决于被操作对象)     动态多态性:继承一个类的多个子类中拥有相同的方法名,那么这些子类产生的对象就可以不用考虑具体的类型,直接去调用类的功能,精髓是统一,例如...

2018-08-21 15:27:11 158

原创 python之路---继承与派生

什么是继承  继承是一种新建类的方式,新建的类称之为:子类/派生类,被继承的类称之为:父类/基类/超类继承的特性1.python支持多继承(一个子类可以同时继承多个父类)2.子类继承父类,可以重用父类的属性 --->减少了类与类之间的代码冗余3.从继承的角度来看,python分为新式类和经典类   新式类:继承object类的类以及他的子类(在python3中都...

2018-08-20 15:05:53 354

原创 pyhon之路---hashlib模块

什么叫hash:一种算法--->将bytes类型的数据转换为数字及字母特点:1.只要传入的内容一样,得到的hash值必然一样import hashlibm=hashlib.md5()# m.update('您好'.encode('utf-8'))# m.update('世界'.encode('utf-8'))# print(m.hexdigest()) ...

2018-08-13 22:47:22 89

原创 python之路---包的使用

包的概念: 包就是一个包含__init__.py文件的文件夹,是一种特殊的模块(是用来被导入使用的) 为什么使用包:   假如你是一个模块的设计者,随着功能的不断完善,一个.py文件内可能存在N多个函数,这时就会出现不易于管理的问题,那么你想到的是根据功能的划分,将相同功能的代码放在一个.py文件,不同的分放到不同的.py文件中,但是对于使用者来说这种简简单单的划分,更改了使用者...

2018-08-10 14:01:55 161

原创 pyhton之路---模块篇

模块循环导入问题  在一个文件夹内建立三个.py文件,m1.py 和 m2.py 和 run.py,前两者作为被导入模块,run.py为执行文件 #执行文件内容import m1#m1模块内容print('正在导入m1...')from m2 import yx = 1#m2模块内容print('正在导入m2...')from m1 import xy = 2...

2018-08-08 14:03:35 104

原创 python之路---模块基础

什么是模块:模块是一系列功能的集合体,我们平时创建的.py文件就是一种模块形式关于模块形式可以分为:1.使用python语法编写的.py文件  2.已被编译为共享库或DLL的C或C++扩展3使用C编写并链接到python解释器的内置模块 4.包使用模块的好处:我们将常用的功能写成一个函数,用于解决代码冗余的问题,而当我们将一个程序按照类型分到不同的文件中时,模块使我们可以重复调用...

2018-08-07 13:13:34 3085

原创 python之路---面向对象编程思想及类

编程思想:    1:面向机器编程          机器语言以及汇编语言都是面向机器编程,以最原始的二进制以及英文字符去直接操作计算机硬件,虽然执行效率极高,但是开发效率低下,且出错率高    2:面向过程编程:          从解决问题的步骤角度出发,先干什么,后干什么,好似一条流水线生产,将复杂的问题流程化,从而简单化,但是面条式的程序,扩展性不高    3:结构化...

2018-08-05 20:57:42 578

原创 python之路---可迭代对象与迭代器

什么是迭代器:对于迭代:迭代就是重复的过程,每次重复都是基于上一次的结果所以,迭代器可以理解为一种迭代取值的工具为什么要有迭代器: 对于列表,元组,字符串这些有序的数据类型来说,可以通过索引取值,而对于字典,集合,文件这些,索引的方式就行不通,所以python为我们提供了一种可以不依赖索引的通用迭代取值方式--->依靠迭代器取值 怎么用迭代器:  1.可迭代...

2018-08-03 11:45:51 151

原创 python之路 ---列表/字典生成式及匿名函数

列表解析:l = ['aaa','bbb','ccc'] #将l内的元素全部变为大写...L = []for i in l: L.append(i.upper())print(L) #使用列表解析:L = [i.upper() for i in l]print(L)#for之后可以跟个if判断语句(但不能有else)l = ['aaa','bbb','ccc'...

2018-08-02 15:33:31 704

原创 python之路 ---递归函数及二分法

递归:在函数调用的过程中,直接或者间接的调用了函数本身分为两个阶段:1.回溯(一次次的调用下去,必须要有某个值来结束,否则一直调用下去)  2.递推def f(): print('你好') f()f()#这样的递归是没有意义的死循环#而且,在第一次调用f()执行到f()后,又调用自己(但是第一次的f()并未结束),这样执行f()所申请的内存#空间会越来越多,p...

2018-08-02 14:26:34 450

原创 python之路---装饰器补充(wraps应用)

装饰器的作用: 对程序者来说:就是为了在遵循开放-封闭原则的前提下,为被装饰对象添加新的功能 对于使用者来说:从表面上来看使用方式和以前并没有改变import timedef timer(func): def wrapper(*args,**kwargs): start_time = time.time() res=func(*...

2018-08-02 13:51:23 576

原创 python之路---装饰器补充(嵌套顺序)

叠加装饰器的使用是有顺序的:1.解释@语法是自下而上的2.执行装饰器是自上而下的import timestate = {"uname": None}def auth(func): def wapper1(*args,**kwargs): if state['uname']: res = func(*args, **kwargs)...

2018-08-01 13:41:37 468

原创 python之路 ---名称空间与作用域

函数是第一类对象---->函数名指向值的内存地址,可以被当作数据使用 1:可以被引用 2:可以当作参数传入函数 3:可以在函数内作为返回值 4:可以作为容器的元素名称空间:用于存放函数名与值绑定关系的地方(但凡要查找值,一定得通过变量名,而变量名需要查找名称空间)名称空间分为三类:1.内置名称空间(在pyhon解释器运行时生效,关闭时失效)2.全局名称空...

2018-07-31 14:02:52 174

原创 python之路---装饰器

开放---封闭原则:在软件上线后,对修改是封闭的(包括修改源代码以及调用方式),对新功能的扩展是开放的装饰器:在不修改源代码及其调用方式的前提下,为被装饰对象添加新功能def home(): print('进入观影模式...')home() 对于上述函数,现在需要给他加一个验证功能. 方式一:def home(): uname = input('输入...

2018-07-30 13:52:21 114

原创 python之路---闭包函数

闭包函数:定义在函数内部的函数,并且该函数包含对外部函数作用域中名字的引用-->称为...  注意:该函数的作用域关系在函数定义阶段就规定死了,与调用位置无关!!!# 例一def f(): x = 1 def f1(): print(x) return f1x=22f = f()f()--->执行结果:1#例二...

2018-07-28 20:16:02 210

空空如也

空空如也

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

TA关注的人

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