08 2017 档案
摘要:一 引出协成 并发的本质是:切换+保存状态 CPU在运行行一个任务时,会在两种情况下切走去执行其他任务,一是该任务发生了阻塞,二是运行该任务的时间过长 yeild可以保存状态,yeild状态保存与操作系统很像 send可以把一个函数的结果传给另外一个函数,从而实现单线程内程序之间的切换 #串行执行
阅读全文
摘要:一 同步锁 注意: 1线程抢的是GIL锁,GIL锁就是执行权限,拿到权限后才能拿到互斥锁Lock,但是如果发现Lock没有被释放而阻塞,则立即交出拿到的执行权。 2join是等待所有,即整体串行,而锁是锁住共享数据部分,即部分串行,而要想保证数据安全就必须让并发变成串行,join和互斥锁都可以实现,
阅读全文
摘要:一开启线程的两种方式 from threading import Thread import time def haha(name): time.sleep(2) print('%s 你大爷......'%name) if __name__ == '__main__': t=Thread(targe
阅读全文
摘要:什么是线程? 一 进程是用来把资源集中到一起(进程是一个资源单位,或者说是资源集合),二线程则是CPU上的执行 单位,多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享进程的地址空 间 二 线程的作用,线程与进程的区别 1线程共享创建它的进程的地址空间;进程有自己的地址空间。
阅读全文
摘要:需要回调函数的场景:进程池中任何一个任务一旦处理完了,就立即告知主进程:我好了额,你可以处理我的结果了。主进程则调用一个函数去处理该结果,该函数即回调函数 我们可以把耗时间(阻塞)的任务放到进程池中,然后指定回调函数(主进程负责执行),这样主进程在执行回调函数时就省去了I/O的过程,直接拿到的是任务
阅读全文
摘要:注意问题 1并发执行的任务通常远大于核数 2一个操作系统不能无限的开启进程,通常有几个核就开启几个进程 3进程开启太多,效率反而下降 创建进程池类:如果指定的numprocess为几个,那么进程就从无到有创建几个,然后自始至终都用这几个进程执行完所有的任务,不会再开启其他的进程 参数介绍: 1 nu
阅读全文
摘要:from multiprocessing import Manager,Process,Lock import os def work(d,lock): # with lock: #不加锁而操作共享的数据,肯定会出现数据错乱 d['count']-=1 if __name__ == '__main_
阅读全文
摘要:from multiprocessing import Process,Pipe import time,os def consumer(p,name): left,right=p left.close() while True: try: baozi=right.recv() print('%s
阅读全文
摘要:一同步与异步 同步执行:一个进程在执行任务时,另一个进程必须等待执行完毕,才能继续执行 异步执行:一个进程在执行任务时,另一个进程无需等待其执行完毕就可以执行,当有消息返回时,系统会提醒后者进行处理,这样会很好的提高运行效率 二守护进程 主进程创建守护进程过程: 一 :守护进程代码在主进程结束后就终
阅读全文
摘要:multiprocessing模块 multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。 需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。 1.2 Pro
阅读全文
摘要:from socket import * import hmac,os secret_key=b'linhaifeng bang bang bang' def conn_auth(conn): ''' 认证客户端链接 :param conn: :return: ''' print('开始验证新链接的
阅读全文
摘要:low方法 import socket,subprocess ip_port=('127.0.0.1',8080) s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO
阅读全文
摘要:粘包 注意注意注意: res=subprocess.Popen(cmd.decode('utf-8'),shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE) 的结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdo
阅读全文
摘要:一 客户端和服务端架构 1 硬件c/s架构 2软甲c/s架构 3 socket与c/s的关系:socket是为了开发c/s的 二 osi七层 三张图片http://www.cnblogs.com/wanghaohao/diary/2017/08/21/7404581.html 详细的网路通讯原理ht
阅读全文
摘要:函数式的简单配置 默认情况下python的logging模块打印日志的标准输出顺序是CRITICAL > ERROR > WARNING > INFO > DEBUG,默认的日志格式为日志级别:Logger名称:用户输出消息。 配置参数 logging.basicConfig()函数中可通过具体参数
阅读全文
摘要:hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等,摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示) 数据量很大,可以分块多次调用update(),最后计算的结果是一样的: md5 = h
阅读全文
摘要:错误:语法错误和逻辑错误 语法错误 逻辑错误 python3中不同的异常可以用不同的类来表示,并处理异常 触发IndexError 1=['wh',333] l[4] 触发KeyError dic = {'name':'wh'} dic['age'] 触发ValueError s='hello' i
阅读全文
摘要:继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 查看继承 提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基
阅读全文
摘要:信用卡用户信息示例 消费: global USER_INFO USER_INFO = "1234567|Alex|daiNiFei|5000|12000|50000|33000" def user(info_dic,user_info_lst): info_dic[int(user_info_lst
阅读全文
摘要:恢复内容开始 1 什么是模块,常见的场景:一个模块就是包含了Python文件定义和声明的文件,文件就是函数名+.py后缀 import 加载模块分为四个通用类别: 1使用Python语言编写的代码(.py文件) 2已被编译为共享库或者DLL或C或C++拓展 3包好一组模块的包 4使用C编写并连接到p
阅读全文
摘要:一.数字相关 1.绝对值:abs(-1) 2.最大最小值:max([1,2,3]) ,min([1,2,3]) 3.序列长度:len('abc') , len([1,2,3]) , len((1,2,3)) 4.取模:divmod(5,2)//(2,1) 5.乘方:pow(2,3,4)//2**3/
阅读全文
摘要:匿名函数 为了解决那些功能很简单的的需求而设计的一句话函数 然而匿名函数并不是真的不能有名字,匿名函数的调用和正常函数的也没什么分别 >> add = lambda x,y : x+y 匿名函数其他功能的用法 面试题 现有两个元组(('a'),('b')),(('c'),('d')),请使用pyth
阅读全文
摘要:* re模块 例子 https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 判断手机号是否合法,以13,14,15,18开头 while True: phone_number = input('please input your p
阅读全文
摘要:可迭代协议 iterable:可迭代的,重复的。 迭代:将某个数据集内的数据一个挨一个的取出来,叫迭代 from collections import Iterable l = [1,2,3,4] t = (1,2,3,4) d = {1:2,3:4} s = {1,2,3,4} print(isi
阅读全文
摘要:python中的68个内置函数。 一,作用域相关 1 locals 获取执行本方法所在命名空间内的局部变量的字典 2 globals 获取全局的变量 二 str类型代码的执行3 详细的博客http://www.cnblogs.com/wanghaohao/diary/2017/08/01/72692
阅读全文