目录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高阶相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数

    跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...

  4. python阶乘匿名函数_python的高阶函数与匿名函数

    一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...

  5. 一文看懂Python(八)-----内置高阶函数用法总结

    函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...

  6. 反恐精英ol永恒python图_反恐精英python编程

    python是开发BS还是CS的啊 为什么在美国的cs编程入门课大多有java和python.我作为一名国内某211大学 正经计算机专业(专业在国内排名二三十名 算是个中上等水平吧 对国内教育资源来说 ...

  7. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  8. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  9. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  10. 自学python需要什么_自学Python编程有什么要求

    现在Python这门课程在计算机专业中特别火爆,我们也都知道,它是时代的趋势,那么大家知道自学Python课程有什么方法或者捷径吗?了解一下 我们首先来看看别人的学习方法吧. 1.看网上名师的教程,学 ...

最新文章

  1. 一、JAVA通过JDBC连接mysql数据库(连接)
  2. 3310复刻版 java_终于等到你:诺基亚3310复刻版开箱简评
  3. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页
  4. 吴恩达《Machine Learning》精炼笔记 11:推荐系统
  5. PHP安装加载yaf扩展
  6. 分布式实时计算—实时计算相关问题及解决方案
  7. 如何在 Windows Server 2003、Windows 2000 和 Windows XP 中备份恢复代理的加密文件系统 (EFS) 私钥...
  8. MySQL运算符,SQL,算术比较逻辑位,优先级,正则表达式,完整详细可收藏
  9. 前端学习(1221):使用过滤器格式化日期
  10. 深度学习TensorFlow的55个经典案例
  11. 通用数据库连接工具--DbVisualizer的使用
  12. 服务器pe 装linux,微PE工具箱增加安装Linux/Ubuntu/Centos/deepin系统菜单
  13. 外研社php,外研社高中英语单词
  14. 【搜索/tarjan找环】zznu-简单环路
  15. laravel8 使用高德地图查询经纬度(输入地名获取经纬度)
  16. Ubuntu18.04更换开机登录界面壁纸
  17. 【javaScript】学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记)
  18. disableHostCheck: true 报错
  19. C++练习11:计算a+aa+aaa+aa…a+…
  20. 使用ansible执行命令时出现Failed to connect to the host via ssh错误

热门文章

  1. 笔试的图形推理题怎么做?
  2. 2022年第十三届蓝桥杯省赛--难度评价
  3. XP不能访问WIN7资源
  4. 萤火虫小程序_漫展广州丨第24届酷狗蘑菇萤火虫漫展圆满收官,我们国庆见!...
  5. Excel函数应用之数据库函数
  6. Linux安装curl完整步骤
  7. 三角网导线平差实例_三角网条件平差计算
  8. uniapp vite 路由跳转、登录模块封装(非无感登录)
  9. OrCAD/Pspice元件库说明
  10. 计算机硬件基础 试题,计算机硬件基础试题(库)