python、mongodb、redis

上传人:碎****木 文档编号:220863578 上传时间:2021-12-09 格式:DOCX 页数:12 大小:32.99KB
返回 下载 相关 举报
python、mongodb、redis_第1页
第1页 / 共12页
python、mongodb、redis_第2页
第2页 / 共12页
python、mongodb、redis_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《python、mongodb、redis》由会员分享,可在线阅读,更多相关《python、mongodb、redis(12页珍藏版)》请在金锄头文库上搜索。

1、python 文件.pypython 是终端中的一个解释器,可以解释文本编辑器.py 文件上面的指令作用是解释文件.py,输出结果print 函数把“中的内容输入到设备上print(“,end=“)end=“不换行错误bug程序不能正常执行,或者执行的结果不是我们期望的1. 手误2. 学问缺乏,理解不到位3. 对语言还需学习和提升python 2.x 默认不支持中文后续编码连续学习python 文件.py python 3.x 是支持中文的建议使用主流版本 python3 文件.py解释器:一句一句解释交互:shell 上用 python 或 python3 进入交互模式集成开发环境:IDE-

2、pycharmtype 函数type(变量,值),查看数据的类型input 函数变量=input(“提示“),从键盘输入信息,都是字符串类型字符转换int(“值“)输出的是整数类型,字符串-整型float(“值“)输出的是浮点型,字符串-浮点型if 条件 1 and 条件 2: XXXelif 条件 3 or 条件 4or 条件 5 or 条件 6:XXXelif not 条件 7: XXXelse:XXXimpot 工具包导入工具包while 条件推断 计数器 是否到达 目标次数: 条件满足时计算器+1break:跳出当前循环continue:跳出当次循环,continue 执行之前肯定要记

3、得计算+1,否那么会进入死循环def 函数名:定义好函数之后,只是封装了代码,假设不主动调用是不会执行的函数名的命名要符合 python 的命名规章调用函数不能放在定义函数之前return 返回结果return 下面的代码不会执行列表数组列表名=值 1,值 2,值 3,值 4。 ,用来存储多个数据列表名值 X就是取列表中对应的值从0 开头代码的构造示意图1. shebang (#! /usr/bin/python3) 指明这是个脚本文件的解释程序2. import 模块3. 全局变量4. 函数定义5. 执行代码主程序a = 1a += a - a = a + a list_str = 1,2,

4、3list_str += list_str - list_str.extend(list_str)所以在变量中,列表的+=会在函数中修改其全局变量文件是某种长期存储设备上的一段数据CPU 调用硬盘中的数据二进制文件:先把硬盘内存大中的数据加载到内存中内存的处理速度快然后交由 CPU 处理,在输出到可视化软件音乐播放器,视频播放器,文本软件。二进制文件我们是看不懂的,机算计可以对其进展读取编译 文本文件是我们可以看到懂得,可以直接被我们读懂文件的操作:翻开文件,读写文件,关闭文件。open,read,write,closepython2 默认使用 ASCIIpython3 默认使用 Unicod

5、eutf-8假设要在 python2 中使用中文,那么可以在 py 文件的开头使用# *-* coding:utf-8 *-*推举或者使用 # enconding = ”utf-8”但是假设在 python2 中,假设使用了以上的方法,当遍历字符串时,输出的结果中文局部会变成问号,全部要做字符串前面加个ustr=u“hello 世界“os 是文件和名目治理操作的工具文件操作os.rename源文件名,目标文件重命名os.remove文件名删除文件名目操作 os.listdir名目名名目列表os.mkdir名目名创立名目os.rmdir名目名删除名目os.getcwd 猎取当前名目os.chdi

6、r目标名目修改工作os.path.isdir文件路径推断是否是文件线程和进程的区分联想流水线,流水线式进程,工人是线程进程:当我们双击一个程序.exe后系统会创立一个进程,同时进程携带有巨大的资源, 消耗的内存很大,且进程之间的资源是独立的线程:是当进程运行某个子任务发送消息,播放音乐,下载电影系统会调度该子线程, 其消耗的内存很小,且线程之间的资源全局变量是共享的进程的开销大有利于资源的保护和治理,而线程相反线程是依靠于进程的,没有进程就没有线程进程间通过 socket 和文件进展数据共享,但是文件的形式共享速度很慢,由于文件时存储在硬盘上的,所以承受队列queue,类似于内存先进先出pri

7、nt(“r123“,end = “),这里面的反斜杠 r 加 end=“实现打印一行重复输出用来实现文件下载的进度条正那么表达式:全部语言中通用,python 导入 re 就可以使用正那么了. 匹配任何一个字符,除了 n,假设要匹配到 n,re.match(“正那么表达 “,“要匹配的字符“,re.S(re.DOTALL) 匹配中列举的字符d 匹配一个数字,0-9D 匹配非数字s 匹配空白,空格和 tabS 匹配非空白w 匹配单词字符,a-z,A-Z,0-9,_W 匹配非单词字符* 匹配前一个字符消灭 0 次或很屡次,即可有可无+ 匹配前一个字符消灭 1 次或者很屡次,即至少有 1 次? 匹配

8、前一个字符消灭 1 次或者 0 次,即 1 次或者没有m 匹配前一个字符消灭m 次m,n 匹配前一个字符消灭从m 到 n 次 匹配开头$ 匹配结尾| 匹配左右任意一个表达式,相当于规律或(ab) 将括号中字符作为一个分组num 引用分组 num 匹配到的字符串,num123456789.。(?P.) 分组起别名,name 是起的别名(?P=name.) 引用别名为 name 分组匹配到的字符串,取得别名的正那么 扫瞄器恳求效劳器GET:恳求的页面等信息Host:目标 IP 和端口Connection:链接方式,长连接或短链接Accept:可接收的页面格式User-Agent:扫瞄器版本,用来反

9、爬虫Accept-Encoding:扫瞄器可接收的压缩格式Accept-Language:扫瞄器可识别的语言 效劳器返回扫瞄器数据head头信息是满足用户恳求区分返回头信息和内容效劳器承受一个空行隔开body将来显示在页面上的内容长连接下:常规的单进程单线程实现多任务:1. 客户端 3 次挥手连接效劳器,效劳器是非堵塞状态的socket_name.setblocking(false)2. 效劳器把新套接字保存到列表中,利用遍历方式取出对应的新套接字这个是个瓶颈,假设套接字很长我得一个个取遍历3. 取完发送的数据之后从列表删除新套接字,释放资源4. 然后进程复制数据文件的方式到内存中复制文件消耗

10、时间,是个瓶颈,再交由 CPU处理epoll 的单进程单线程处理多任务nginx:1. 客户端 3 次挥手链接效劳器,效劳器非堵塞状态2. 效劳器把新套接字保存到列表中,这个时候效劳器不是承受遍历的方式猎取新套接字,而是用大事监听的方式有内核通知这样就好比做销售你挨个去介绍你的产品,而我只有打下 广告,就有人买3. 取完发送的数据之后从列表删除新套接字,释放资源4. 然后由内核从特别的内存中读取数据内核和效劳 APP 中有一个特别的存储空间,是效劳和内核共享的,这样就省去了文件复制的时间GIL:全局解释器锁,是由于 Cpython 解释器自带的;在 Cpython 解释器中运行的多线程,每个线

11、程在执行的时候,都会先猎取一个GIL 锁,保证同一时刻只有一个线程可以执行(GIL 锁是一种锁,类似于进程锁,保证同一时间内只有一个线程执行)1. python 语言和 GIL 没有任何关系,这个一个历史问题,python 解释器难以移除 GIL2. GIL 全局解释器锁,每个线程在执行的过程都需要先猎取GIL,保证同一时间只有一个线程可以执行代码3. 线程释放 GIL 锁的状况,在 IO 操作等可能会引起堵塞的 system call 之前,可以临时释放GIL,但在执行完毕后必需重新猎取 GIL python 3.x 使用计时器执行时间到阈值后,当前线程释放 GIL或 python2.x t

12、ickets 计数到达 1004. python 使用多进程是可以利用多核的 CPU 资源的5. 多线程爬取比单线程性能有提升,由于遇到IO 堵塞会自动释放 GIL 锁python 编译过程中遇到 GIL 问题时可以使用其他语言解决python 可以直接调用其他的语言浅拷贝 copy不会转变最原始的地址,但是中间的指向地址会变化深拷贝 deepcopy会转变原来的地址,就是创立一个全新的存储地址假设 copy.copy 拷贝的是元组,他不会进展浅拷贝,仅仅是指向,由于元组是不行变类型, 因此 copy.copy 会自动识别元组(copy.deepcopy 也一样)假设元组里面是根本数据类型,不

13、管怎么拷贝都不会转变指向,假设元组里面是指向类型的数据,copy.copy 不会转变地址,但是 copy.deepcopy 可以转变super()类super()方法并不是看上去的那么简洁1. 父类名字(xxx).xxx 直接简洁明白调用父类2. super(xxx).xxx 他调用的挨次遵循 mro 打印出来的元组挨次不指定类名默认当前类 3.super(指定类名,xxx).xxx 他指定类名开头,遵循 mro 打印出来的元组挨次mro 的元组下一个类地址就是 super 方法多调用的父类with 方法实现上下文治理器with 实例对象 as 别名xxxxx xxxxx这样实现方法必需在实例

14、对象中实现enter和exit方法在 with 调用实例对象的时候回先调用enter,enter返回的值会被别名指向在 with 下方的代码执行完成之后,肯定会调用exit方法这样实现的好处是不管实例对象有无特别,其内部的值都会被保存XPath(提取 html 页面的数据块)使用 xpath helper 或者是 chrome 中的 copy xpath 都是从 element 中提取的数据但是爬虫猎取的是 url 对应的响应,往往和 elements 不一样/html/head/title/text()猎取 html 下的 head 下的 title 下的文本/html/head/title/text()猎取 html 下的 head 下的 title 下的全部文本包括 title 下标签下的所有文本/html/head/link/rel猎取 html 下的 head 下的 link 下的 rel 对应的属性对元素进展快速定位.表述当前.表述父标签(节点)*匹配全部|表示或规律/表示根节点/能够快速定位到所需要的标签(节点)/ulid=“detail-list“/li/h1/p/text()定位到带有 id=“detail-list“的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号