位置: IT常识 - 正文

Python如何进行线程切换(python绘制一条直线)

编辑:rootadmin

推荐整理分享Python如何进行线程切换(python绘制一条直线),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python线条,python绘制一条直线,用python画一条线,python直线,python画线段代码,python线条,python画线段代码,python线条,内容如对您有帮助,希望把文章链接给更多的朋友!

线程切换

条件对象能让一个线程 A 停下来,等待其他线程 B ,线程 B 满足了某个条件后通知(notify)线程 A 继续运行。线程首先获取一个条件变量锁,如果条件不足,则该线程等待(wait)并释放条件变量锁,如果满足就执行线程,也可以通知其他状态为 wait 的线程。其他处于 wait 状态的线程接到通知后会重新判断条件。

无论是多进程还是多线程,只要数量一多,效率肯定上不去,为什么呢?

Python如何进行线程切换(python绘制一条直线)

我们打个比方,假设你不幸正在准备中考,每天晚上需要做语文、数学、英语、物理、化学这5科的作业,每项作业耗时1小时。

如果你先花1小时做语文作业,做完了,再花1小时做数学作业,这样,依次全部做完,一共花5小时,这种方式称为单任务模型,或者批处理任务模型。

假设你打算切换到多任务模型,可以先做1分钟语文,再切换到数学作业,做1分钟,再切换到英语,以此类推,只要切换速度足够快,这种方式就和单核CPU执行多任务是一样的了,以幼儿园小朋友的眼光来看,你就正在同时写5科作业。

但是,切换作业是有代价的,比如从语文切到数学,要先收拾桌子上的语文书本、钢笔(这叫保存现场),然后,打开数学课本、找出圆规直尺(这叫准备新环境),才能开始做数学作业。操作系统在切换进程或者线程时也是一样的,它需要先保存当前执行的现场环境(CPU寄存器状态、内存页等),然后,把新任务的执行环境准备好(恢复上次的寄存器状态,切换内存页等),才能开始执行。这个切换过程虽然很快,但是也需要耗费时间。如果有几千个任务同时进行,操作系统可能就主要忙着切换任务,根本没有多少时间去执行任务了,这种情况最常见的就是硬盘狂响,点窗口无反应,系统处于假死状态。

所以,多任务一旦多到一个限度,就会消耗掉系统所有的资源,结果效率急剧下降,所有任务都做不好。

相关推荐:《Python视频教程》

下面为一个有趣的例子

importthreadingclassBoy(threading.Thread):def__init__(self,cond,name):super(Boy,self).__init__()self.cond=condself.name=namedefrun(self):self.cond.acquire()print(self.name+":嫁给我吧!?")self.cond.notify()#唤醒一个挂起的线程,让hanmeimei表态self.cond.wait()#释放内部所占用的琐,同时线程被挂起,直至接收到通知被唤醒或超时,等待hanmeimei回答print(self.name+":我单下跪,送上戒指!")self.cond.notify()self.cond.wait()print(self.name+":Li太太,你的选择太明治了。")self.cond.release()classGirl(threading.Thread):def__init__(self,cond,name):super(Girl,self).__init__()self.cond=condself.name=namedefrun(self):self.cond.acquire()self.cond.wait()#等待Lilei求婚print(self.name+":没有情调,不够浪漫,不答应")self.cond.notify()self.cond.wait()print(self.name+":好吧,答应你了")self.cond.notify()self.cond.release()cond=threading.Condition()boy=Boy(cond,"LiLei")girl=Girl(cond,"HanMeiMei")girl.start()boy.start()

运行结果如下:

LiLei:嫁给我吧!?HanMeiMei:没有情调,不够浪漫,不答应LiLei:我单下跪,送上戒指!HanMeiMei:好吧,答应你了LiLei:Li太太,你的选择太明治了。

相关推荐:

本文链接地址:https://www.jiuchutong.com/zhishi/304582.html 转载请保留说明!

上一篇:CSS中的三大特性(css 3有哪些新特性)

下一篇:ps卸载不干净无法安装(ps卸载没反应)

  • 职工福利费会计凭证
  • 房产契税是怎样计算的
  • 调整增值税误差的方法
  • 非征税期抄税如何解决
  • 企业收到股利分红如何缴税
  • 给客户开增值税专用发票
  • 咨询公司小规模纳税人怎么界定
  • 应付债券利息调整是什么意思
  • a企业给关联公司借款怎么做账
  • 短期借款的主要形式
  • 固定资产计入了主营业务成本,该怎么办
  • 发票认证当月必须抵扣吗
  • 小微企业的增值税怎么算
  • 施工安全协议违约怎么办
  • 发票抬头不完整能用吗
  • 存货质押贷款风险
  • 公司注销公告怎么发布
  • 公司购买的五金工具报销怎么做
  • 冲减以前年度多计的管理费用分录
  • 股东用技术股出售股票
  • 行政单位的存货是什么
  • 从农民手中购进农产品进项税
  • 房产税和土地使用税计入什么科目
  • 机票抵扣增值税需要什么凭证
  • 企业所得税申报表在哪里打印
  • 办理对公账户手续流程
  • 外币汇兑差额债券投资计入什么科目?
  • 税务局代开发票需要什么资料
  • 一般企业利润表格式
  • 被扣留的质保金怎么办
  • 内部调拨账务处理
  • 商务平台建设
  • 公户的利息收入账务处理咋处理
  • 资产负债表其他流动资产计算公式
  • mac电脑键盘进水,键盘不可以用了
  • 违约金没有写按什么算
  • ctl.start
  • 附有退回条件的销售商
  • vue2+element-plus 密码校验及动态校验
  • thinkphp3.x中session方法的用法分析
  • 安装充电桩电费怎么收
  • css page-break-after
  • 企业财政拨款所得免税吗
  • 充油卡 发票
  • 单位收的房租可以发工资吗
  • php匹配邮箱
  • 2022年最新电脑操作系统
  • mongodb主备配置
  • BOM学习
  • 附加税申报核心内容
  • 报表怎么报送
  • 公司注销单位公积金账户余额怎么处理
  • 应交税费为什么写在借方
  • 哪些情况可以开立基本账户
  • 固定资产出售通过什么科目
  • 金税三期个税申报
  • 固定资产对外投资通过固定资产清理吗
  • 汇算清缴步骤及处理方法
  • 报销冲抵什么意思
  • 计提坏账准备的会计分录
  • 什么服务费发票可以免税的
  • 生物性资产是什么科目
  • 城镇土地使用税减免税政策
  • win10入门全教程视频
  • winex.exe - winex是什么进程
  • 命令行教程
  • win7开机总是自检
  • WIN7系统如何恢复出厂系统
  • win7旗舰版安装教程u盘
  • win8不能安装软件
  • WIN10系统中软件打开找不到网络共享盘
  • 帝国cms列表页隐藏部分文章
  • js实现图片放大功能
  • jquery图片轮播无缝连接
  • nodejs读取文件字节数组
  • java栈怎么写
  • js easyui
  • mongodb python
  • 国税总局北京市税务局
  • 改税务报表会有限风险吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设