栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

python-并发编程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python-并发编程

内容概要
  • UDP协议
  • 操作系统的发展史
  • 多道技术
  • 进程理论
    • 并行与并发
    • 进程的三状态
    • 同步与异步
    • 阻塞与非阻塞
    • 同步异步与阻塞非阻塞
UDP协议

server:

import socket
server = socket.socket(type=socket.SOCK_DGRAM)  # 默认使用TCP协议,需要选择UDP协议
server.bind(('127.0.0.1', 8080))
msg, address = server.recvfrom(1024)  # 接收到消息和客户端地址
print(msg.decode('utf8'), address)  # 指定地址发送信息
server.sendto('from server'.encode('utf8'), address)

client:

import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1', 8080)
client.sendto('from client'.encode('utf8'), server_address)
msg, address = client.recvfrom(1024)
print(msg.decode('utf8'), address)

相较于TCP协议,UDP协议不用建立双向通道,直接指定地址发送信息,不需要考虑客户端是否退出,基于报文发送针对短消息也不会出现黏包问题
但没有双向通道和二次确认机制,发送的信息可能会丢失

操作系统的发展史
  1. 穿孔卡片
    程序员将对应程序与数据的穿孔卡片装入输入机,然后启动输入机把程序和数据输入到计算机内存,接着启动程序进行运算;计算完毕,打印机输出计算结果;程序员取走结果后,才让下一个人上机
    • 程序员能够一个人独占全机,不会出现资源被其他用户占用而等待的现象
    • CPU利用率非常低,只有在运算的时候工作了,其余时间都是空闲的
  2. 联机批处理系统
    将多个用户的作业写入磁带,计算机直接读取磁带上的数据处理,减少了作业建立时间和手工操作时间,提高了CPU的利用率
  3. 脱机批处理系统
    现代计算机的雏形,将作业从输入机上传到卫星机,卫星机通过高速磁带传递给主机运算;在将结果保存到磁带,通过卫星机传递给输出机,提升CPU的利用率
    操作系统的发展史也可以看做是提升CPU利用率的发展史
多道技术

前提:只使用一个核/一个CPU
单道技术
所有程序依次执行,总耗时就是所有程序耗时之和
多道技术
利用计算机的空闲时间提前准备好一些数据,提高效率
切换、保存状态
CPU在两种情况下会切换执行程序
1. 程序进入IO操作(输入输出操作)
获取用户输入、文件操作、time.sleep
2. 程序长时间占用CPU
保存状态
在切换前会记录当前的执行状态,再次执行时基于保存状态继续执行

进程理论
  • 如何理解进程
    程序:保存在文件里的代码
    进程:正在被运行的程序
  • 进程的调度算法
    • 先来先服务算法
      按照先后顺序执行,对于耗时短的程序不友好
    • 短作业优先调度
      耗时短的作业优先执行,对于耗时长的程序不友好
    • 时间片轮转法+多级反馈队列
      让每个程序都统一执行一个时间片段,一个程序执行了多次都还没有结束,判断是长时间作业,分到下一层
      越往下分配的时间片越多,但是优先级越低
    进程的并发与并行
    • 并行
      多个进程同时执行,单个CPU无法实现
    • 并发
      多个进程看上去像是同时执行就可以称为并发,单个CPU就能够实现,并行也属于并发
    进程的三状态
    1. 所有程序想要被运行都必须先经过就绪态
    2. 运行过程中出现了IO操作,进入阻塞态
    3. 运行时间片到了,返回就绪态
    4. 阻塞结束,返回就绪态
    同步与异步 用于描述任务的提交状态
    同步
    提交了任务后原地等待任务的结果
    异步
    提交任务后不等待结果,得到结果自动提醒阻塞与非阻塞 用于描述进程的执行状态
    阻塞
    阻塞态
    非阻塞
    就绪态、运行态同步异步与阻塞非阻塞 同步阻塞:执行多个任务时,提交一个任务,之后就一直等待着他执行结束,其他什么事也不做
    同步非阻塞:执行多个任务时,提交一个任务,在任务阻塞时切换其他任务执行,并随时回来看看阻塞是否结束
    异步阻塞:执行多个任务时,提交一个任务,之后就等待任务返回结果回来,期间也不会做其他事
    异步非阻塞:执行多个任务时,提交一个任务,在任务阻塞时切换其他任务执行,任务结束结果会自动返回
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号