python销毁线程_聊聊 Python 中的线程
01什么是线程?
线程是操作系统能够进行运算调度的最小单位,它隶属于进程之中,也有人叫它轻量级进程。线程自己没有系统资源,它可与同属一个进程的其它线程共享进程中的资源,同一进程中的多个线程可以并发运行。
python 语言中内置了 threading 库对多线程功能的支持,从而简化 Python 语言的多线程编程。
02线程实现
普通创建线程的方法
在程序中引入 thrading 库,实现创建一个简单的线程
初始化一个线程
threading.Thread(target=run, args=("t1",))
调用 start 方法启动线程
当线程启动之后,会调用 run 方法,执行打印传入线程的参数信息
这是运行结果
thread.is_alive() 查看线程是否正在运行
thread.join() 连接到某个线程上,join 会等待该线程结束,解释器会一直保持运行,直到所有的线程都终结为止。
守护线程
当需要长时间或一直不断在后台运行任务时,这就需要考虑守护线程,将线程设置为 daemon。
t1 = threading.Thread(target=run, args=("t1",), daemon=True)
在初始化线程时设置 daemon 为 True ,开启守护线程。daemon 线程是无法被 join 的,当主线程结束后就会自动销毁掉。
03为什么使用多线程
线程在程序中是相对独立的执行流,与分隔的进程相比,线程具有轻量级、灵活、支持并发、线程与线程之间可以通信等优点。线程与线程之间隔离度小,共享句柄、内存和其它进程应有的状态。
因为线程相对于进程有以上诸多优点,在应用程序开发中使用多线程技术就会极大地提高应用程序的效率。多个线程共享内存,节约了系统资源,使一个进程下可以并发地运行多个线程,完成搞了高效的系统计算能力。
线程与线程之间更利于通信,一个应用程序的功能并不是也一般不会存在孤立的存在,不同功能模块之间需要进行数据交互,也可能需要同时运行,这就得依靠多线程与线程与线程之间的通信来完成。
操作系统创建进程时,需要单独的为进程分配独立的内存空间,而线程就相对简单很多。在操作系统中,内存资源是有限的,如何将有限的资源最大化利用,这就得让我我们考虑如何合理、灵活地运用多线程技术来实现。
总结
1、进程之间不能共享系统资源,进程与进程之间的通信业比较麻烦,相比线程就灵活很多;
2、操作系统在创建进程时,需要重新为进程分配资源,而操作系统中的资源有限,创建线程相对于创建进程就要好很多;
3、多个线程共享资源,可并发运行,相对于进程来说,运行效率就会高了不少。
感谢你的阅读,欢迎关注作者,作者会不定期更新 Python 硬核知识。
python销毁线程_聊聊 Python 中的线程相关推荐
- python split()方法_聊聊 Python 的单元测试框架(一):unittest
本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 前言 说到 Python 的单元测试框架,想必接触过 Python 的朋友脑袋里第一个想到的就是 unittest. ...
- 进程handle获取线程_获取进程中的线程列表
进程handle获取线程 The System.Diagnostics namespace contains functions that allow you to manage processes, ...
- 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 数据处理全家桶(Redis篇)
作者:星安果 来源:AirPython 前面两篇文章聊到了 python 处理 Mysql.Sqlite 数据库常用方式,本篇文章继续说另外一种比较常用的数据存储方式:Redis Redis:Remo ...
- python 强制结束线程_在python中实现强制关闭线程的示例
Python 如何强制关闭线程过去只可以用来回忆,别沉迷在阴影中,否则永远看不清前面的路. Python用sleep停止一个线程的运行,而不影响主线程的运行,案例代码如下: from threadin ...
- python遍历循环怎么理解_聊聊python中的循环遍历
python之循环遍历 关于循环遍历大家都知道,不外乎for和while,今天我在这写点不一样的循环和遍历.在实践中有时会遇到删除列表中的元素,那么循环遍历列表删除指定元素该怎么做呢? 还是直接上代码 ...
- python 批量创建线程_【Python】批量创建线程
在<[Python]线程的创建.执行.互斥.同步.销毁>(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条.其实,Python里是可 ...
- python面试设计模式问题_聊聊 Python 面试最常被问到的几种设计模式(上)
1. 前言 在很多人的印象里,Python 作为一款动态编程语言,在日常开发中也很少涉及到设计模式 事实上,任何一个编程语言都可以使用设计模式,它可以保证代码的规范性,只是每一种语言的实现方式略有不同 ...
最新文章
- Spring Boot 属性配置和使用
- 【S操作】轻松优雅防止(解决)两次掉进同一坑的完美解决方案
- OpenCV如何启用Halide后端以提高效率
- 使用Spring Boot和Spring MVC自定义HttpMessageConverters
- 设置QtreeWidget水平滚动条
- HIVE高级函数--get_json_object()和json_tuple()
- 解决 phpmyadmin #2002 无法登录 MySQL 服务器
- SpringMVC 环境搭建
- 一键安装nginx(auto_nginx_install.sh
- 【图像检测】基于matlab GUI比值+归一化+相关系数遥感图像【含Matlab源码 737期】
- 港股分时交易数据 API 接口
- RISC-V MCU + 盲人智能导航系统
- CATIA二次开发—视图及视点
- 不积跬步无以至千里,反思
- vue树形权限菜单_vue实现树形菜单步骤说明
- 1062: 最大公约数 Python
- 时间格式YYYYMM与yyyyMM的区别
- css table自适应斜线
- Cisco(64)——路由策略综合
- layui怎么给下拉框赋值_layui给select下拉框赋值
热门文章
- 预充电电路工作原理_变频冰箱开关电源电路工作原理及检修。
- 定时执行sql统计数据库连接数并记录到表中
- struts1.2上传文件到服务器
- java集合类练习_JAVA集合类练习
- 计算机系统安装要点,电脑重新装系统要注意哪些要点 重装系统时的六大事项...
- php隔行符,PHP PHP_EOL 换行符
- pdo query获取mysql单行结果_php代码连不上mysql的可能?看看这个也许能给你点启发...
- swagger OAuth认证
- zabbix提示错误:zabbix server is not running: the information displayed may not be current
- [置顶] SPL讲解(6)--Condition篇