毛织厂家东莞网站建设,怎么做微信小程序商城,兄弟们来个能看的,wordpress 图片显示一、引言今天这篇文章主要是带大家了解一下多任务的编程.二、多任务的编程1.为什么要有多任务?首先发出一个问题,利用之前讲过的内容咱们到底能不能实现多任务操作呢?答案是否定的,因为之前所写的程序都是单任务的#xff0c;也就是说一个函数或者方法执行完成 , 另外一个函…一、引言今天这篇文章主要是带大家了解一下多任务的编程.二、多任务的编程1.为什么要有多任务?首先发出一个问题,利用之前讲过的内容咱们到底能不能实现多任务操作呢?答案是否定的,因为之前所写的程序都是单任务的也就是说一个函数或者方法执行完成 , 另外一个函数或者方法才能执行。要想实现多个任务同时执行就需要使用多任务。多任务的最大好处是充分利用CPU资源提高程序的执行效率。2.什么是多任务?多任务是指在同一时间可以执行多个任务,例如如今的计算机大多都是多任务操作系统.3.多任务的两种表现形式多任务分为两种,分别是并发和并行3.1并发操作并发指在一小段时间内快速交替的去执行任务,是一种伪并行.例如:对于单核cpu处理多任务,操作系统轮流让各个任务交替执行假如:软件1执行0.01秒切换到软件2软件2执行0.01秒再切换到软件3执行0.01秒……这样反复执行下去 , 实际上每个软件都是交替执行的 . 但是由于CPU的执行速度实在是太快了表面上我们感觉就像这些软件都在同时执行一样 . 这里需要注意单核cpu是并发的执行多任务的。3.2并行操作并行是指在一段时间内真正的去同时执行多个任务.对于多核cpu处理多任务操作系统会给cpu的每个内核安排一个执行的任务多个内核是真正的一起同时执行多个任务。这里需要注意多核cpu是并行的执行多任务始终有多个任务一起执行。三、多进程1.什么是进程进程Process是资源分配的最小单位它是操作系统进行资源分配和调度运行的基本单位通俗理解一个正在运行的程序就是一个进程。例如你正在运行的微信、qq等软件,他们都是进程.2.多进程的作用def func_a(): print(a) def func_b(): print(b) func_a() func_b()如图是一段很简单的代码,一旦运行这段代码,他会先执行完a,再去执行b,但是如果我们让func_a()和func_b()同时执行的话,会让我们的效率大大提升.3.多进程完成多任务① 导入进程包import multiprocessing② 通过进程类创建进程对象进程对象 multiprocessing.Process()③ 启动进程执行任务进程对象.start()3.1多进程任务中创建进程对象进程对象 multiprocessing.Process([group [, target任务名 [, name]]])3.2多进程创建进程对象中的参数说明参数名说明target执行的目标任务名这里指的是函数名(方法名)name进程名一般不用设置group进程组目前只能使用None3.3进程创建与启动代码边玩游戏边听音乐:import multiprocessing import time def music(): for i in range(3): print(听音乐...) time.sleep(0.2) def play_game(): for i in range(3): print(玩游戏...) time.sleep(0.2) if __name__ __main__: music_process multiprocessing.Process(targetmusic) play_game_process multiprocessing.Process(targetplay_game) music_process.start() play_game_process.start()3.4进程执行带有参数的任务创建进程:Process([group [, target [, name [, args [, kwargs]]]]])参数说明:参数名说明args以元组的方式给执行任务传参args表示调用对象的位置参数元组args(1,2,anne,)kwargs以字典方式给执行任务传参kwargs表示调用对象的字典,kwargs代码示例:import multiprocessing import time def music(num): for i in range(num): print(听音乐...) time.sleep(0.2) def coding(count): for i in range(count): print(敲代码...) time.sleep(0.2) music_process multiprocessing.Process(targetmusic, args(3, )) coding_process multiprocessing.Process(targetcoding, kwargs{count: 3}) music_process.start() coding_process.start()案例:多个参数传递import multiprocessing import time def music(num, name): for i in range(num): print(name) print(听音乐...) time.sleep(0.2) def coding(count): for i in range(count): print(敲代码...) time.sleep(0.2) if __name__ __main__: music_process multiprocessing.Process(targetmusic, args(3, 多任务开始)) coding_process multiprocessing.Process(targetcoding, kwargs{count: 3}) music_process.start() coding_process.start()4.获取进程编号4.1什么是进程编号?进程编号就好比我们的身份证,每个运行中的进程都有一个独属于它的进程编号,我们想找到某个进程的时候,只需要找到他的编号就好,那我们该如何获取进程编号呢?4.2两种进程编号① 获取当前进程编号getpid()② 获取当前进程的父进程编号getppid()4.3获取当前进程编号import os def work(): # 获取当前进程的编号 print(work进程编号, os.getpid()) # 获取父进程的编号 print(work父进程的编号, os.getppid()) work()5.进程应用注意点5.1进程间不共享全局变量实际上创建一个子进程就是把主进程的资源进行拷贝产生了一个新的进程这里的主进程和子进程是互相独立的。5.2主进程与子进程之间的结束顺序默认主进程应该等待子进程结束后再结束,按照常理而言主进程结束的话,不管子进程结束没结束都应该立马终止.但是要是主进程结束后出现了子进程还没有结束的情况我们又该如何应对呢?解决方案一设置守护进程import multiprocessing import time # 工作函数 def work(): for i in range(10): print(工作中...) time.sleep(0.2) if __name__ __main__: # 创建子进程 work_process multiprocessing.Process(targetwork) # 设置守护主进程主进程退出后子进程直接销毁不再执行子进程中的代码 work_process.daemon True # 启动子进程 work_process.start() # 延迟1s time.sleep(1) print(主进程执行完毕)解决方案二销毁子进程import multiprocessing import time # 工作函数 def work(): for i in range(10): print(工作中...) time.sleep(0.2) if __name__ __main__: # 创建子进程 work_process multiprocessing.Process(targetwork) # 启动子进程 work_process.start() # 延迟1s time.sleep(1) # 让子进程直接销毁表示终止执行 主进程退出之前把所有的子进程直接销毁就可以了 work_process.terminate() print(主进程执行完毕)以上两种方法都可以解决主进程结束而子进程还没有结束这种问题.四、结语本来是想把线程和协程也一块讲一下的,但是多任务和进程这儿的内容有点多,剩下的内容就下次再讲吧.