python之多任务

什么是多任务,多任务的概念是什么

1 多任务解析

什么是多任务呢?简单的说,就是操作系统可以同时运行多个任务,现在,多核CPU已经非常普及了,但是,即使过去的单核CPU也可以执行多任务。由于cpu执行代码都是顺序执行的,那么单核CPU是是怎么执行多任务的呢?
在这里插入图片描述

2 多任务的表现形式

window下打开任务管理器我们可以很清晰的看到多个进程在同时执行任务,qq,微信等都是多进程的形式寄存在window下,大多我们在写一些控制台程序真正执行的时候都是以进程调度。
在这里插入图片描述

3 python默认是单任务

在这里插入图片描述
很显然刚刚的程序并没有完成唱歌和跳舞同时进行的要求
如果想要实现“唱歌跳舞”同时进,那么就需要一个新的方法,叫做:多任务

线程

线程的概念

线程,有时候被称为轻量级进程(Lightweight Process, LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指针(PC),寄存器集合和堆栈组成。另外线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
在这里插入图片描述

主线程:

当一个程序启动时,就有一个进程被操作系统(os)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程
主线程重要性的两个方面:
1. 是产生其子线程的线程
2. 通常他必须最后完成执行,比如执行各种关闭的动作

子线程

可以看做是执行程序的一条分支,当子线程启动后会和主线程一起同时执行

1 单线程执行

在这里插入图片描述

2 使用threading模块 创建子线程

python的therad模块是比较底层的模块,python的threading模块是对thread做了一些包装的。可以更加方便的使用。

2.1 核心方法
threading.Thread(target =函数名字)  threading模块的thread类 创建子线程对象
线程对象.start()启动子线程
2.2 代码实现

在这里插入图片描述
使用这样的方法可以明显感觉到速度变得很快。
说明:

	1.可以明显看出使用多线程的并发操作,花费时间要短很多
	2. 当调用start()s时,才会真正的创建先线程,并且开始执行
	3. 每个线程都有一个唯一标识符,来区分线程中的主次关系
	4. 主线程:main Thread,main函数或者程序主入口,都可以成为主线程
	5. 子线程:Thread-x使用threading.Thread()创建出来的都是子线程
	6. 线程数量:主线程数+子线程数

在这里插入图片描述

3. 主线程会等待所有的子线程结束后才结束
import threading
from time import sleep,ctime
def sing():
    """唱歌"""
    for i in range(3):
        print('正在唱歌')
        time.sleep(0.5)



def dence():
    """跳舞函数"""
    for i in range(3):
        print('正在跳舞')
        time.sleep(0.5)

if __name__ == "__main__":
    print('-----开始-----:%s'%ctime())
    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dence)
    t1.start()
    t2.start()
    # sing()
    # dence()

    print('------结束-----:%s'%ctime())

巩固学习视频总结记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端工匠之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值