python—多线程定义和创建(一)
一、线程的理解
线程是"轻量级""的,一个进程中的线程使用同样的地址空间,且共享许多资源。启动线程的时间远远小于启动进程的时间和空间,而且,线程间的切换也要比进程间的切换快得多。由于使用同样的地址空间,所以线程之间的数据通信比较方便,一个进程下的线程之间可以直接使用彼此的数据。当然,这种方便性也会带来一些问题,特别是同步问题。。
多线程对于那些I/O受限的程序特别适用。
二、线程分类:
内核线程:由操作系统内核创建和撤销。
用户线程:不需要内核支持而在用户程序中实现的线程。
三、线程的生命周期
一个线程在其生命周期内,会在不同的状态之间转换。在任何一个时刻,线程总是处于某种线程状态中。虽然不同的操作系统可以实现不同的线程模型,定义不同的线程状态,但是总的说来,一个线程模型中下面几种状态是通用的。
1、线程的创建:t=threading.Thread()
2、就绪状态:已经获得了除CPU之外的其他资源,正在参与调度,等待被执行,当调度完成之后,立即运行
3、启动状态:获得了CPU时间片段,正在运行
4、等待\阻塞状态:遇到time.sleep()时,会阻塞,暂时不参与调度,等待事件发生
5、中止状态:线程运行结束,run函数运行结束,等待系统回收其线程资源。
四、函数创建线程
执行结果:
四、类创建线程
t=MyThread(name=s[i]) 创建线程,里面的参数代表线程的名字,如果不传,系统会默认有一个名字
五、多线程之得到线程的数量
执行结果
count=len(threading.enumerate()) 获得当前运行的线程的数量
为什么线程一开始为6呢?
5个子线程+1个主线程
python—多线程定义和创建(一)相关推荐
- python类的定义和创建_Python类对象的创建和使用
通过前面章节的学习,我们已经学会如何定义一个类,但要想使用它,必须创建该类的对象. 创建类对象的过程,又称为类的实例化. 类名(参数) 定义类时,如果没有手动添加 __init__() 构造方法,又或 ...
- 【244】Python 说出下面list1,list2,list3的输出值(新的默认列表仅仅只在函数被定义时创建一次)...
♣ 题目部分(原文见公众号:python宝) python宝: https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU5Nj ...
- 站长在线Python精讲:在Python中函数的定义与创建详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的定义与创建详解>.本文的主要内容有:函数的定义.函数的定义规则.函数的创建. 目录 1.函数的定义 2 ...
- Python字典(字典的定义,创建字典,获取字典中的数据,字典元素增删改,获取字典视图,字典的遍历,字典的特点,字典生成公式)
1.字典的定义 2.创建字典 3.获取字典中的数据 4.字典元素增删改 5.获取字典视图 lst={'数值1':300,'数值2':100,'数值3':400,'数值4':200} print(lst ...
- Python多线程(3)——Queue模块
Python多线程(3)--Queue模块 Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Pyth ...
- c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...
- 人生苦短之Python多线程
#encoding=utf-8 import threading import time''' python多线程并不是真正意义上的多线程,通常我们所说的多线程是多个线程同时执行某功能,而在pytho ...
- linux查看python线程,Python多线程详解
线程概念: 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.线程 ...
- python多线程与GIL
目录 1.GIL 1.1 为什么要有GIL 1.2 GIL的运作方式 1.3 GIL带来的问题 2.多线线程 2.1 线程的调度和启动 3.线程构造与使用 3.1调用Thread类构造器创建线程 3. ...
最新文章
- 下载最新Android代码的方法
- Elasticsearch-01CentOS7单节点部署ES5.6.16
- 处理Xcode8输出无用的Log信息
- NDVI最大值法MVC合成之ArcGIS Cell Statistics 实现
- android系统(8)---android事件分发机制
- 等保2.0标准发布一周年,行业用户如何有效落实合规建设
- c 结构体之位域(位段)
- appium架构分析
- python中文意思-请问在python中**是啥什么意思?
- cpu爆了怎么排查和处理_CPU飙高,系统性能问题如何排查?
- FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建
- 使用Quartz做定时器
- windows上面运行jar文件,Windows服务器后台运行jar包
- PCB设计敷铜时的天线效应
- Objective-C 与 C++ 的区别
- Android事件分发理解
- html返回到处乱跑,电脑鼠标乱动不受控制(鼠标到处乱跑不听使唤)
- 应用系统安全检测技术
- 欧几里得定理(nyoj775)
- Android AccountManager 账户同步管理简单介绍
热门文章
- python多级字典嵌套_python – 如何拆分字符串并形成多级嵌套字典?
- linux替换每个英文字开头为大写,shell脚本,文件里面的英文大小写替换方法。...
- 成功解决cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215) s
- ML之回归预测:以某个数据集为例从0到1深入理解科学预测之回归(实数值年龄预测)问题的思路框架
- 在Hyperopt框架下使用XGboost与交叉验证
- os_mutex.c(全)
- 正则表达式的简单理解
- cxgrid列高度行宽度定义
- tnsname.ora
- oracle 显示格式化