反恐精英ol永恒python厉害吗_【CS】Python高阶
目录Socket
线程
进程
Asynio/协程
Cookie/Session
RestAPI
1.Socket
(1)五层网络模型应用层(文件传输/电子邮件/文件服务)HTTP/FTP/SMTP/DNS/Telnet
传输层(端对端接口)TCP/UDP
网络层(选路由)IP/ICMP
数据链路层(传输有地址的帧/错误检测)ARP
物理层(物理媒体)100BASE-SX
(2)SocketTCP对接HTTP单向传输协议
TCP对接Socket自编实时对话协议 (可模拟http请求)
(3)Server与Client通信
(4)通信模式单对单
多用户连接
2.线程
(1)GIL全局解释器锁同一时刻只有一个线程在一个cpu上执行字节码,无法将多个线程映射到多个cpu上执行
会在适当时间释放(python2按代码行数划分,python3按时间片划分),IO操作也会释放GIL
(2)多线程编程
对于IO多进程多线程性能差别不大
(3)多线程方式使用Thread类 (import threading.Thread)
继承Thread (import threading.Thread)
线程池ThreadPoolExecutor (from concurrent.futures import ThreadPoolExecutor)作用:
控制数量
主线程获取某一个线程状态/某任务状态及返回值
当一个线程完成,主线程立即知道
futures多线程多进程编码接口一致
(4)线程间通信共享变量
线程安全的queue.Queue(用优先队列,使后插入的数据优先使用)
(5)线程同步Lock/RLock (可重入锁)import threading.lockcondition条件变量 用于复杂的线程间同步import threading.condition(with上下文中才可用wait和notify)semaphore用于控制进入数量的锁import threading.semaphore
(7)多进程VS多线程多进程: 内存耗费高,稳定性一般,切换代价高,多CPU并发(运行效率高),更适合耗CPU的操作
多线程: 内存耗费低,稳定性好,切换代价低,更适合IO
3.进程
(1)简介创一个进程会将父进程数据拷贝一份到子进程(数据完全隔离)
进程间共享内存
(2)多进程方式使用Process类 (import multiprocessing.Process)
继承Process (import multiprocessing.Process)
进程池 (from concurrent.futures import ProcessPoolExecutor)
(3)进程间通信multiprocess.Queue
multiprocessing.Manager.Queue(进程池使用)
multiprocessing.pipe(仅适用于两个进程)
4.Asynio/协程
(1)概念辨析
并发:一个时间段内,几个程序在一个CPU运行,但任意时刻仅一个程序在CPU运行
并行:任意时刻,多个程序同时运行在多个CPU上(并行程序数=CPU数)
同步:调用IO时,必须等IO完成才返回
异步:调用IO时,不用等IO完成就返回
阻塞:调用函数时当前线程被挂起
非阻塞:调用函数时当前线程不会被挂起,而是立即返回
(2)IO多路复用(属于并发技术)所有IO模型:阻塞式IO/非阻塞式IO/IO复用/信号驱动式IO/异步IO
定义:一个进程可以监视多个描述符(读/写就绪就通知程序相应操作),数据从内存到用户空间select:适合并发不高,连接活跃的使用
poll: 包含要监视的event,发生的event,无最大数量限制,轮询获取就绪描述符
epoll: 用一个文件描述符管理多个描述符,将用户关系的文件描述符事件存到内核事件表中,这样在用户空间和内核空间copy只要一次,适合并发高,连接活跃度不高的使用
(3)回调缺点异常处理复杂
回调嵌套,环节易出错,难维护难理解(可读性差)
有数据要被每个回调都处理
使用当前函数的局部变量
共享状态管理困难
(4)协程
(1)简介问题:回调复杂/同步并发性差/线程同步要lock
解决:多入口的函数,可暂停,并在适当事件回复该函数执行,可往暂停处传入值->协程
协程:函数级别的调度->事件循环+协程模式(单线程)
进程线程:内核级别的调度
(2)生成器: 可生成值,可接收值
send()向内传值
next()启动下一个
close()关闭
throw()抛异常
yield from 会在调用方和子生成器间建立双向通道
(3)async和awaitawait等同于@types.coroutine + yield
(4)asyncio: 异步IO库(多进程/多线程/协程)事件循环+回调+epoll
类似:tornado/gevent/twisted
协程嵌套
线程池+asyncio=协程中集成阻塞IO
asyncio模拟http请求
task和future:task是future和协程的桥梁(激活/接口一致),future存放结果的容器
asyncio同步和通信:Lock,Queue
asyncio高并发爬虫
5.Cookie/Session
(1)Cookie与Seesion区别cookie: 保存在本地浏览器,存储数量有限(过程:第一次登录服务器发cookie给浏览器保存,第二次发送请求,服务器根据cookie判断用户)
session: 存储在服务器(解决cookie保存数据不安全的问题)
cookie和session相结合:服务器给浏览器发一个sessionid加密后存在cookie中,解决安全问题,数据量大问题
(2)具体使用
Cookie:
# 设置
response.set_cookie(key,value,max_age,expires,path,domain,secure,httponly)
# 获取
request.COOKIES
# 删除
response.delete_cookie(keyName)
Session:
# 设置
request.session[keyName]= value
# 获取
request.session.get(keyName)
# 删除
request.session.pop(keyName)
# 取键
request.session.keys()
# 取值
request.session.items()
# 清空所有value
request.session.clear()
# 删所有key、vlaue
request.session.flush()
# 设置过期时间
request.session.set_expiry(value)
# 清除过期session
request.session.clear_expired()
(3)session存储机制数据库(默认)/文件/缓存/先存入缓存再存入数据库/加密后存到浏览器cookies
6.RestAPI定义:接口风格,Representational State Transfer表述性状态转移
统一资源接口,用标准http方法对资源操作(get/post/put/delete),URI仅表示资源名称
反恐精英ol永恒python厉害吗_【CS】Python高阶相关推荐
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数
跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...
- python阶乘匿名函数_python的高阶函数与匿名函数
一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...
- 一文看懂Python(八)-----内置高阶函数用法总结
函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...
- 反恐精英ol永恒python图_反恐精英python编程
python是开发BS还是CS的啊 为什么在美国的cs编程入门课大多有java和python.我作为一名国内某211大学 正经计算机专业(专业在国内排名二三十名 算是个中上等水平吧 对国内教育资源来说 ...
- python集群_使用Python集群文档
python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...
- python 网页编程_通过Python编程检索网页
python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...
- 自学python需要什么_自学Python编程有什么要求
现在Python这门课程在计算机专业中特别火爆,我们也都知道,它是时代的趋势,那么大家知道自学Python课程有什么方法或者捷径吗?了解一下 我们首先来看看别人的学习方法吧. 1.看网上名师的教程,学 ...
最新文章
- 一、JAVA通过JDBC连接mysql数据库(连接)
- 3310复刻版 java_终于等到你:诺基亚3310复刻版开箱简评
- SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页
- 吴恩达《Machine Learning》精炼笔记 11:推荐系统
- PHP安装加载yaf扩展
- 分布式实时计算—实时计算相关问题及解决方案
- 如何在 Windows Server 2003、Windows 2000 和 Windows XP 中备份恢复代理的加密文件系统 (EFS) 私钥...
- MySQL运算符,SQL,算术比较逻辑位,优先级,正则表达式,完整详细可收藏
- 前端学习(1221):使用过滤器格式化日期
- 深度学习TensorFlow的55个经典案例
- 通用数据库连接工具--DbVisualizer的使用
- 服务器pe 装linux,微PE工具箱增加安装Linux/Ubuntu/Centos/deepin系统菜单
- 外研社php,外研社高中英语单词
- 【搜索/tarjan找环】zznu-简单环路
- laravel8 使用高德地图查询经纬度(输入地名获取经纬度)
- Ubuntu18.04更换开机登录界面壁纸
- 【javaScript】学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记)
- disableHostCheck: true 报错
- C++练习11:计算a+aa+aaa+aa…a+…
- 使用ansible执行命令时出现Failed to connect to the host via ssh错误