08 2017 档案
python并发编程之多线程2------------死锁与递归锁,信号量等
摘要:一、死锁现象与递归锁 进程也是有死锁的 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用, 它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程, 如下就是死锁 1 死锁 2 from threa
阅读全文
python并发编程之多线程1
摘要:一多线程的概念介绍 threading模块介绍 threading模块和multiprocessing模块在使用层面,有很大的相似性。 二、开启多线程的两种方式 1 1.创建线程的开销比创建进程的开销小,因而创建线程的速度快 2 from multiprocessing import Process
阅读全文
初始线程(相关理论)
摘要:一、什么是线程 线程:顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程
阅读全文
python并发编程之多进程2-------------数据共享及进程池和回调函数
摘要:一、数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的。 虽然进程间数据独立,但可以用过Manager实现数据共享,事实上Manager的功能远不止于此。 3.(IPC)进程之间的通信有两种实现方式:管道和队列 1 fr
阅读全文
python并发编程之多进程1-----------互斥锁与进程间的通信
摘要:一、互斥锁 进程之间数据隔离,但是共享一套文件系统,因而可以通过文件来实现进程直接的通信,但问题是必须自己加锁处理。 注意:加锁的目的是为了保证多个进程修改同一块数据时,同一时间只能有一个修改,即串行的修改,没错,速度是慢了,牺牲了速度而保证了数据安全。 1.上厕所的小例子:你上厕所的时候肯定得锁门
阅读全文
Cpython支持的进程与线程
摘要:一、multiprocessing模块介绍 python中的多线程无法利用CPU资源,在python中大部分情况使用多进程。python中提供了非常好的多进程包multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行功能(函数),该模块与多线程模块thre
阅读全文
进程理论基础
摘要:背景知识 顾名思义,进程即一个软件正在进行的过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。所以想要真正了解进程,必须先了解操作系统。详见博客点击进入。 须知
阅读全文
函数嵌套复习
摘要:1.函数对象:函数是第一类对象特点 1:可以被引用 1 def func(): 2 pass 3 f =func 4 print(f is func) 2:可以当做参数传给其它函数 1 def foo(): 2 print('from foo') 3 def bar(func): 4 print('
阅读全文
python中if __name__ == '__main__'的说明
摘要:这个表示执行的是此代码所在的文件。 如果这个文件是作为模块被其他文件调用,不会执行这里面的代码。 只有执行这个文件时, if 里面的语句才会被执行。 这个功能经常可以用于进行测试。 python中,当打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,
阅读全文
网络编程-之------粘包现象
摘要:一、什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 首先需要掌握一个socket收发消息的原理 应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可
阅读全文
函数参数复习
摘要:一、函数1.为什么要使用函数? 减少代码的冗余2.函数先定义后使用(相当于变量一样先定义后使用)3.函数的分类: 内置函数:python解释器自带的,直接拿来用就行了 自定义函数:根据自己的需求自己定义的函数 def func(): #函数名打印出来的是内存地址 '''注释''' 函数体4.函数定义
阅读全文
python --------------网络(socket)编程
摘要:一、网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系:我们用socket就是为了完成C/S架构的开发 osi七层 引子: 须知一个完整的计算机系统是由硬件
阅读全文
计算器
摘要:1.简单计算器 1 #计算一个表达式的时候,首先肯定是先算括号里面的,再算乘除法,后算加减法 2 import re 3 # 1.去括号 4 def remove_kuohao(expression): 5 ''' 6 这是一个去除括号的函数 7 :param expression: 传进来的表达式
阅读全文
python------------------异常处理
摘要:一、错误与异常 程序中难免会出现错误,而错误分为两种 1.语法错误:(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误:(逻辑错误),比如用户输入的不合适等一系列错误 那什么是异常呢? 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下。异
阅读全文
hashlib,configparser,logging模块
摘要:一、常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等。 那么什么是摘要算法呢?摘要算法又称为哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 注意:摘要算法不是一个解密算法。(摘要算法,检测一个字
阅读全文
面向对象之反射及内置方法
摘要:一、静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静
阅读全文
python之--------封装
摘要:一、封装: 补充封装: 什么是封装呢?(封装不是单纯意义的隐藏,其实它还是可以查看的) 就是把一些不想让别人看的给隐藏起来了 封装数据:目的是保护隐私 功能封装:目的是隔离复杂度 如果用了私有的,在类的外部,无法直接使用变形的属性,但是在类的内部可以直接使用 1 1.用我们常用的__init__方法
阅读全文
继承进阶
摘要:一、复习 面向对象 1.类:具有相同属性和方法 的一类事物 类名可以实例化一个对象 类名可以调用类属性,(静态属性 和(方法)动态属性) 2.对象:也就是实例 对象名:调用对象属性 调用方法 3.什么叫抽象? 从小到大的过程 4.组合 什么有什么的关系(将一个类的对象当做另一个类的属性) 5.继承
阅读全文
继承和组合
摘要:一、组合 组合:组合指的是,在一个类中以另外一个类的对象(也就是实例)作为数据属性,称为类的组合 也就是说:一个类的属性是另一个类的对象,就是组合 例子: 圆环是由两个圆组成的,圆环的面积就是外圆的面积减去内圆的面积。圆环的周长就是内圆的周长加上外圆的周长,这个时候,我们首先设计一个圆形类,计算一个
阅读全文
初始面向对象
摘要:一、面向过程:面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。 优点:极大地降低了写成学的复杂度,只需要顺着执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就是用来解决一个问题,如果修改代码就都得改变 二
阅读全文
包的补充
摘要:1.包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间 2.常见目录结构 1 import os 2 os.makedirs('glance/api') 3 os.makedirs('glance/cmd') 4 os.makedirs('glance/db') 5 l = [] 6
阅读全文
模块和包
摘要:一、模块 1.import.... 一个py文件就可以作为一个模块 模块的导入:直接导入文件的名字,不需要带着后缀 模块中的函数调用:模块名.函数名() 导入模块的时候做了三件事:1.首先开辟了一个新的命名空间my_moudle 2.执行了my_moudle内的代码 3.将my_moudle里面的名
阅读全文
re模块的结果小练习题
摘要:1.匹配标签 1 import re 2 ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','<h1>hello</h1>') 3 #还可以在分组中利用?P<name>的形式给分组起名字 4 #获取的匹配结果可以直接用group('名字
阅读全文
常用模块2
摘要:一、time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=8, tm_min=4, tm_sec=32, tm_
阅读全文
python--------------常用模块之正则
摘要:一、认识模块 什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文件) 2.已被编译为共享库二和DLL的C或C++扩展 3.包好一组模块的包 4.使用C编写并连接到pyt
阅读全文
练习题。。。。。。。。
摘要:1 一、二分查找法算法 2 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 3 def find(l,aim,start=0,end=len(l)-1): 4 mid = (start+end)//2 5 if not l[start:end+1]: ...
阅读全文
生成器相关的面试题
摘要:1 def demo(): 2 for i in range(4): 3 yield i 4 5 g=demo() 6 7 g1=(i for i in g) 8 g2=(i for i in g1) 9 10 print(list(g1)) 11 print(list(g2)) 1 def add
阅读全文
python---------匿名函数
摘要:一、匿名函数:也叫lambda表达式 1.匿名函数的核心:一些简单的需要用函数去解决的问题,匿名函数的函数体只有一行 2.参数可以有多个,用逗号隔开 3.返回值和正常的函数一样可以是任意的数据类型 二、匿名函数练习 1 dic = {'k1':50,'k2':80,'k3':90} 2 # func
阅读全文
python----------迭代器和生成器
摘要:一、可迭代协议:可以被迭代要满足要求的就叫做可迭代协议。内部实现了__iter__方法 iterable:可迭代的 对应的标志 什么叫迭代?:一个一个取值,就像for循环一样取值 字符串,列表,元组,集合,字典都是可迭代的 二、迭代器协议:内部实现了__iter__,__next__方法 迭代器大部
阅读全文
python--------------内置函数
摘要:https://www.processon.com/ 具体分类见此网站
阅读全文