一、进程
1、概念
(1)并发:在一段时间内交替去执行多个任务。
例如对于单核cpu处理多任务,操作系统轮流让各个任务交替执行(任务数量大于CPU的核心数)。
(2)并行:在一段时间内真正的同时一起执行多个任务。
例如对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内核是真正的一起同时执行多个任务。这里需要注意多核cpu是并行的执行多任务,始终有多个任务一起执行(任务数量小于或等于CPU的核心数)。
2、进程:
进程(Process)是资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位,通俗理解:一个正在运行的程序就是一个进程例如:正在运行的qq,微信等他们都是一个进程。一个程序运行后至少有一个进程。
(1)进程的创建步骤
# 1.导入进程包
import multiprocessing
# 2.通过进程类创建进程对象
进程对象 = multiprocessing.Process()
# 3.启动进程执行任务
进程对象.start()
(2)通过进程类创建进程对象
进程对象 = multiprocessing.Process(target=任务名)
参数说明:target-执行的目标任务名,这里指的是函数名(方法名)、name-进程名,一般不用设置、group-进程组,目前只能使用None
(3)进程执行带有参数的任务:args-以元组的方式给执行任务传参(元组方式传参一定要和参数的顺序保持一致)、kwargs-以字典方式给执行任务传参(字典方式传参字典中的key一定要和参数名保持一致)
(4)进程编号的作用:当程序中进程的数量越来越多时,如果没有办法区分主进程和子进程还有不同的子进程,那么就无法进行有效的进程管理,为了方便管理实际上每个进程都是有自己编号的
(5)获取当前进程编号:os.getpid()
、获取当前父进程编号:os.getppid)
(6)主进程会等待所有的子进程执行结束再结束。
(7)为了保证子进程能够正常的运行,主进程会等所有的子进程执行完成以后再销毁,设置守护主进程的目的是主进程退出子进程销毁,不让主进程再等待子进程去执行。设置守护主进程方式:子进程对象.daemon = True
--举个例子1:
import multiprocessing
def sing():
for i in range(3):
print("唱唱..")
def dance():
for i in range(3):
print("跳跳..")
if __name__ == '__main__':
# 1.通过进程类创建进程对象
# target:执行的目标任务名,这里指的是函数名(方法名)
sing_process = multiprocessing.Process(target=sing)
dance_process = multiprocessing.Process(target=dance)
# 2.使用进程对象启动进程执行指定任务
sing_process.start()
dance_process.start()
--举个例子2:
import multiprocessing
import time
def work():
for i in range(10):
print("工作中...")
time.sleep(0.2)
if __name__ == '__main__':
# 创建子进程
work_process = multiprocessing.Process(target=work)
# 设置守护主进程,主进程退出后子进程直接销毁,不再执行子进程中的代码
work_process.daemon = True
work_process.start()
# 让主进程等待1秒钟
time.sleep(1)
print("主进程执行完成了")
标签:__,python,process,任务,py01,进程,执行,multiprocessing
From: https://www.cnblogs.com/wangfengzi/p/17862459.html