在Python程序中,想要实现多任务可以使⽤进程来完成,进程是实现多任务的⼀种⽅式。属于CPU密集型的任务。
进程的概念
进程(Process)是资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位
⼀个正在运⾏的程序或者软件至少有⼀个进程,也就是说每启动⼀个进程,操作系统都会给其分配⼀定的运⾏资源(比如内存资源)保证进程的运⾏。
⽐如:现实⽣活中的公司可以理解成是⼀个进程,公司提供办公资源(电 脑、办公桌椅等),真正⼲活的是员⼯,员⼯可以理解成线程。
注意:
⼀个程序运⾏后⾄少有⼀个进程,⼀个进程默认至少有⼀个线程(主线程),进程⾥⾯可 以创建多个线程,线程是依附在进程⾥⾯的,没有进程就没有线程。
进程的作用
充分利用cpu资源,让多个任务(小于等于cpu个数)并行运行,从而提高运行效率。
进程适合cpu密集型的任务。
单进程运行
def work_a(): print("任务A,玩命工作") def work_b(): print("任务B,玩命工作") ''' 按照代码的执行顺序 , work_a函数执行完毕后才能执行work_b函数 如果可以让work_a和work_b同时并发运行 , 显然执行效率会大大提升 ''' work_a() work_b()
一个任务一个任务的按顺序执行,效率低,执行时间长。适合任务之间有依赖顺序的场景。
多进程执行任务
充分利用cpu(核心)资源,并发执行任务
1 # 1. 导入多进程模块 2 import multiprocessing 3 4 5 def work_a(): 6 print("任务A,玩命工作") 7 8 9 def work_b(): 10 print("任务B,玩命工作") 11 12 13 if __name__ == '__main__': # 多进程,一定不用少了此句,此句用于保护主程序代码 14 # 2. 创建子进程 15 work_a_process = multiprocessing.Process(target=work_a()) 16 work_b_process = multiprocessing.Process(target=work_b()) 17 18 # 3. 启动进程 19 work_a_process.start() 20 work_b_process.start()
上例:有3个进程:主进程、2个子进程。因为任务只有2个,也可以创建1个子进程。
单进程与多进程对比
-
执行方式:
- 单进程:程序在一个进程中顺序执行,按照代码的先后顺序逐步执行。
- 多进程:程序在多个进程中同时执行,每个进程拥有独立的内存空间,可以并行执行。
-
资源利用:
- 单进程:只能充分利用单个 CPU 核心,无法实现真正的并行计算。
- 多进程:可以利用多个 CPU 核心进行并行计算,提高任务的处理速度和系统的响应能力。
-
内存占用:
- 单进程:所有任务共享同一进程的内存空间,可能导致内存占用过高。
- 多进程:每个进程都拥有独立的内存空间,可以更好地控制内存占用。
-
编程复杂度:
- 单进程:编写单进程程序相对简单,代码结构清晰,调试和排错也相对容易。
- 多进程:编写多进程程序较复杂,需要考虑进程间通信、数据同步等问题,代码会更加复杂,调试和排错也相对困难。
-
适用场景:
- 单进程:适用于简单的任务,不需要并行计算的场景,或者需要确保程序稳定运行的场景。
- 多进程:适用于大规模数据处理、复杂计算、并行计算等需要充分利用多核心资源的场景。
总体来说,单进程适合简单的任务,而多进程适合需要并行计算和充分利用多核心资源的任务。选择使用哪种方式取决于具体的需求和应用场景。
标签:work,并行计算,概念,任务,进程,执行,多任务 From: https://www.cnblogs.com/allenxx/p/17575141.html