python-多任务编程-线程
2021/8/19 9:06:09
本文主要是介绍python-多任务编程-线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2.1多线程的概念
-
线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。
-
线程是Python程序中实现多任务的另外一种方式,线程的执行需要cpu调度来完成。
2.2多线程的使用
-
导入线程模块
-
import threading
-
-
创建子线程并指定执行的任务
-
sub_thread = threading.Thread(target=任务名)
-
-
启动线程执行任务
-
sub_thread.start()
-
1. 导入线程模块 #导入线程模块 import threadingCopy 2. 线程类Thread参数说明 Thread([group [, target [, name [, args [, kwargs]]]]]) group: 线程组,目前只能使用None target: 执行的目标任务名 args: 以元组的方式给执行任务传参 kwargs: 以字典方式给执行任务传参 name: 线程名,一般不用设置 3. 启动线程 启动线程使用start方法
-
2.3线程执行带有参数的任务
-
线程执行任务并传参有两种方式:
-
元组方式传参(args) :元组方式传参一定要和参数的顺序保持一致。
-
字典方式传参(kwargs):字典方式传参字典中的key一定要和参数名保持一致。
-
2.4线程的注意点介绍
-
线程之间执行是无序的
-
线程之间执行是无序的,它是由cpu调度决定的 ,cpu调度哪个线程,哪个线程就先执行,没有调度的线程不能执行。
-
进程之间执行也是无序的,它是由操作系统调度决定的,操作系统调度哪个进程,哪个进程就先执行,没有调度的进程不能执行。
-
-
主线程会等待所有的子线程执行结束再结束
-
设置守护主线程有两种方式:
-
threading.Thread(target=show_info, daemon=True)
-
线程对象.setDaemon(True)
-
-
-
线程之间共享全局变量
-
线程之间共享全局变量数据出现错误问题
-
线程同步: 保证同一时刻只能有一个线程去操作全局变量
-
线程等待(join)
-
-
进程和线程的对比
-
关系对比
-
区别对比
-
优缺点对比
-
1. 关系对比
-
线程是依附在进程里面的,没有进程就没有线程。
-
一个进程默认提供一条线程,进程可以创建多个线程。
-
2. 区别对比
-
进程之间不共享全局变量
-
线程之间共享全局变量,但是要注意资源竞争的问题,解决办法: 线程同步
-
创建进程的资源开销要比创建线程的资源开销要大
-
进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
-
线程不能够独立执行,必须依存在进程中
-
多进程开发比单进程多线程开发稳定性要强
-
3. 优缺点对比
-
进程优缺点:
-
优点:可以用多核
-
缺点:资源开销大
-
-
线程优缺点:
-
优点:资源开销小
-
缺点:不能使用多核
-
这篇关于python-多任务编程-线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享