08 2017 档案

摘要:一、 协程介绍 单线程下实现并发,提升运行效率, 1.自己控制切换,保存状态 2.遇到I/O切 (单纯的CPU切没意义,只有在遇到I/O的时候切才有效率) 一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。、 需要强调的是: 对比操作系统控制线程的切换,用户在单线 阅读全文
posted @ 2017-08-31 19:45 Cool· 阅读(275) 评论(0) 推荐(0) 编辑
摘要:1.concurrent.futures模块 直接内置就是 异步的提交 ,如果你想同步也可以实现(p.submit(task,i).result()即同步执行) 2.属性和方法: 1.submit 提交 2.shutdown 关闭池的入口 等池运行结束 1 #进程池 2 from concurren 阅读全文
posted @ 2017-08-31 16:59 Cool· 阅读(255) 评论(0) 推荐(0) 编辑
摘要:十三、死锁、递归锁 1.所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 1 from threading import Loc 阅读全文
posted @ 2017-08-30 16:51 Cool· 阅读(185) 评论(0) 推荐(0) 编辑
摘要:理论部分 一、什么是线程: 1.线程:一条流水线的工作过程 2.一个进程里至少有一个线程,这个线程叫主线程 进程里真正干活的就是线程 3.进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 4.多线程(即多个控制线程)的概念是,在一个进程中存在多个控 阅读全文
posted @ 2017-08-28 17:31 Cool· 阅读(201) 评论(0) 推荐(0) 编辑
摘要:一、进程补充: 1,生产者消费者模型: 两类角色,一类负责生产数据,另外那类负责数据 生产完放到共享空间,另外那类到空间取数据进行处理 好处: 生产数据的同时可以进行数据的处理,不用等(并发效果) 问题:要有共享空间(1.文件--硬盘,速度慢;2.内存) 要有锁 队列可以完美解决既是内存空间又自带加 阅读全文
posted @ 2017-08-28 16:56 Cool· 阅读(172) 评论(0) 推荐(0) 编辑
摘要:方式:队列(推荐使用) 一、基本情况 1.可以往队列里放任意类型的数据 2. 队列:先进先出 3. q=Queue(3) #可以设置队列中最多可以进入多少个值,也可以不设置 q.put('first') q.put('second') q.put('third') # q.put('fourht') 阅读全文
posted @ 2017-08-25 17:02 Cool· 阅读(252) 评论(0) 推荐(0) 编辑
摘要:1 from multiprocessing import Process 2 import os 3 import time 4 def work(): 5 print('%s is working' %os.getpid()) 6 time.sleep(3) 7 if __name__ == ' 阅读全文
posted @ 2017-08-25 16:24 Cool· 阅读(2051) 评论(0) 推荐(0) 编辑
摘要:1 from multiprocessing import Process,Lock 2 import os 3 import time 4 def work(mutex): 5 mutex.acquire() 6 print('task[%s] 上厕所' %os.getpid()) 7 time. 阅读全文
posted @ 2017-08-25 16:04 Cool· 阅读(188) 评论(0) 推荐(0) 编辑
摘要:一、进程背景 1.进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 2.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统, 二、操作系统 1.操作 阅读全文
posted @ 2017-08-24 16:23 Cool· 阅读(208) 评论(0) 推荐(0) 编辑
摘要:一、 什么是粘包 1.须知:只有TCP有粘包现象,UDP永远不会粘包 2.所谓粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。 二、两种情况下会发生粘包。 1.发送数据时间间隔很短,数据了很小,会合到一起,产生粘包 1 from socket import * 阅读全文
posted @ 2017-08-22 20:15 Cool· 阅读(501) 评论(0) 推荐(0) 编辑
摘要:一 、客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 二、 三、 1.互联网协议就相当于计算机界的英语 2.数据传输的过程中包头一定要是固定的长度 四、socket层的位置 socket层处于应用层于传输层之间--socket抽象层 五、socket是什么,作用是什么 Sock 阅读全文
posted @ 2017-08-21 16:09 Cool· 阅读(179) 评论(0) 推荐(0) 编辑
摘要:1.默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称: 阅读全文
posted @ 2017-08-18 16:54 Cool· 阅读(131) 评论(0) 推荐(0) 编辑
摘要:1.来看一个好多软件的常见文档格式如下: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User = hg [topsecret.s 阅读全文
posted @ 2017-08-17 15:53 Cool· 阅读(175) 评论(0) 推荐(0) 编辑
摘要:1.用途: # 文件校验 # 文件是否被改变# 登录密码 #不能解密,但可以“撞库” #加盐 hashlib.md5('nezha'.encode('utf-8')) 2. import hashlib md5_obj = hashlib.md5('nezha'.encode('utf-8')) m 阅读全文
posted @ 2017-08-17 15:43 Cool· 阅读(120) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。
posted @ 2017-08-17 15:22 Cool· 阅读(7) 评论(0) 推荐(0) 编辑
摘要:注意:os.stat('path/filename') 获取文件/目录信息 的结构说明 阅读全文
posted @ 2017-08-08 20:18 Cool· 阅读(133) 评论(0) 推荐(0) 编辑
摘要:什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化 序列化的目的: 1、以某种存储形式使自定义对象持久化; 2、将对象从一个地方传递到另一个地方。 3、使程序更具维护性。 一、Json模块提供了四个功能:dumps、dump、loads、load import json di 阅读全文
posted @ 2017-08-08 19:33 Cool· 阅读(181) 评论(0) 推荐(0) 编辑
摘要:一、lambda表达式 1.匿名函数的核心:一些简单的需要用函数去解决的问题,匿名函数的函数体只有一行 2.参数可以有多个,用逗号隔开 3.返回值和正常的函数一样可以是任意的数据类型 4.练习: 请把下面的函数转换成匿名函数 def add(x,y) return x+y add() 结果: sum 阅读全文
posted @ 2017-08-08 19:01 Cool· 阅读(188) 评论(0) 推荐(0) 编辑
摘要:sys模块是与python解释器交互的一个接口 1.sys.argv 命令行参数List,第一个元素是程序本身路径 # 传参 应用场景:权限控制 2.sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 print(sys.path) # 查看当前目录的环境变量 3. 阅读全文
posted @ 2017-08-08 16:39 Cool· 阅读(170) 评论(0) 推荐(0) 编辑
摘要:random模块的应用: 阅读全文
posted @ 2017-08-08 16:16 Cool· 阅读(178) 评论(0) 推荐(0) 编辑
摘要:一、三种表示方法 1.时间戳(timestamp): time.time( ) #得到的是float类型 2.格式化(Format String): time.strftime('%Y/%m/%d %H:%M:%S') #得到的是字符串类型 3.结构化(struct_time): time.loca 阅读全文
posted @ 2017-08-08 15:50 Cool· 阅读(164) 评论(0) 推荐(0) 编辑
摘要:1.namedtuple: 生成可以使用名字来访问元素内容的tuple >>> from collections import namedtuple >>> Point = namedtuple('Point', ['x', 'y']) >>> p = Point(1, 2) >>> p.x >>> 阅读全文
posted @ 2017-08-07 20:40 Cool· 阅读(171) 评论(0) 推荐(0) 编辑
摘要:1.通过re模块可以做一些关于正则的相关操作 2.正则表达式:做字符串匹配的规则 1)字符组:在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[ ]表示 [0-9][a-f][A-F] ,可以匹配数字,大小写形式的a~f 2)元字符: 3)量词 4)贪婪匹配与惰性匹配 贪婪匹配:在满 阅读全文
posted @ 2017-08-07 17:18 Cool· 阅读(291) 评论(0) 推荐(0) 编辑
摘要:# for i in range(100):# print(i*i)列表推导式: # l =[i*i for i in range(100)]# print(l)# l = [{'name':'v','age':28},{'name':'v'}]# name_list = [dic['name'] 阅读全文
posted @ 2017-08-02 16:22 Cool· 阅读(172) 评论(0) 推荐(0) 编辑
摘要:1.本质:就是迭代器 2.生成器函数: def tail(filename): with open(filename) as f: f.seek(0, 2) #从文件末尾算起 while True: line = f.readline() # 读取文件中新的文本行 if not line: time 阅读全文
posted @ 2017-08-02 16:16 Cool· 阅读(249) 评论(0) 推荐(0) 编辑
摘要:1.迭代: 迭代就是一个一个一个挨着的取值 2.可迭代类型: str ,列表,元组,集合,字典 3.判断迭代器和可迭代的方法 #第一种:判断内部是不是实现了 __next__#'__next__' in dir(o)#第二种:# from collections import Iterable #可 阅读全文
posted @ 2017-08-02 15:44 Cool· 阅读(125) 评论(0) 推荐(0) 编辑
摘要:https://www.processon.com/mindmap/59803759e4b06a973c4dc657 阅读全文
posted @ 2017-08-01 17:13 Cool· 阅读(198) 评论(0) 推荐(0) 编辑
摘要:1.递归: 在函数内,调用自己。 (技巧: 每次调用时,函数前面需加上return,这样返回值就可以一层一层 的返回去) #def age(n):# if n == 1:# return 40# else:# return age(n-1)+2 #print(age(4)) 2.结束递归: 当遇到r 阅读全文
posted @ 2017-08-01 16:07 Cool· 阅读(189) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示