设为首页
收藏本站
切换到宽版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
VIP用户组
官网群
无名商城论坛
»
论坛
›
资源分享区
›
学习资源专区
›
【LSP】 感知线程状态的解决方案,Event与信号量 ...
返回列表
发帖
查看:
212
|
回复:
0
[其他技术]
【LSP】 感知线程状态的解决方案,Event与信号量
[复制链接]
无名
无名
当前离线
积分
32464
1万
主题
1万
帖子
3万
积分
管理员
积分
32464
发消息
发表于 2022-5-8 17:02:31
|
显示全部楼层
|
阅读模式
今天是Python专题的第21篇文章,我们继续多线程的话题。
上周的文章当中我们简单介绍了线程和进程的概念,以及在Python当中如何在主线程之外创建其他线程,并且还了解了用户级线程和后台线程的区别以及使用方法。今天我们来看看线程的其他使用,比如如何停止一个线程,线程之间的Event用法等等。
停止线程
利用Threading库我们可以很方便地创建线程,让它按照我们的想法执行我们想让它执行的事情,从而加快程序运行的效率。然而有一点坑爹的是,线程创建之后,就交给了操作系统执行,我们无法直接结束一个线程,也无法给它发送信号,无法调整它的调度,也没有其他高级操作。如果想要相关的功能,只能自己开发。
怎么开发呢?
我们创建线程的时候指定了target等于一个我们想让它执行的函数,这个函数并不一定是全局函数,实际上也可以是一个对象中的函数。如果是对象中的函数,那么我们就可以在这个函数当中获取到对象中的其他信息,我们可以利用这一点来实现手动控制线程的停止。
说起来好像不太好理解,但是看下代码真的非常简单:
如果你运行这段代码,会发现屏幕上只输出了10,因为我们将_running这个字段置为False之后,下次循环的时候不再满足循环条件,它就会自己退出了。
如果我们想要用多线程来读取IO,由于IO可能存在堵塞,所以可能会出现线程一直无法返回的情况。也就是说我们在循环内部卡死了,这个时候单纯用_running来判断还是不够的,我们需要在线程内部设置计时器,防止循环内部的卡死。
线程
,
我们
,
函数
,
循环
,
创建
相关帖子
•
【FUT】AIDE第二课
•
【Max】团队~利用AIDE做个小应用=总结+AIDE教程结束
•
【DMT】■iApp系列教程①~创建一个应用,简单修改,打包软件
•
【LUR】【教程+源码】要饭系统网站
•
【LUR】帅气炫迈在线教你如何搭建蔡徐坤打篮球网站
•
【解忧】深入理解Java反射
•
【LUR】C语言for循环输出
•
哔哩哔哩关注用户协议软件,支持多线程,引流软件
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表