创建流程 *将需要子进程处理的时间封装为函数 *通过process类创建进程对象,关联函数 *可以通过进程的对象对进程进行属性设置 *通过start启动进程 *通过join回收进程
接口使用 【1】Process(target = 函数名字,args = (),kwargs = {}) 功能:创建进程对象 参数:target绑定要执行的目标函数 args元组 给target函数位置传参 kwargs 字典 给target函数关键字传参
from multiprocessing import Process from time import sleep def worker(sec,name): for i in range(3): sleep(sec) print("I'm %s"%name) print("I'm working...") # p = Process(target = worker,args = (2,"Baron")) # p = Process(target = worker,kwargs = {"name":"Baron","sec":2}) p = Process(target = worker,args = (2,),kwargs = {"name":"Baron"}) p.start() p.join()【2】p.start() 功能:启动进程 * 此时进程产生,将p绑定函数作为新进程的执行内容 【3】p.join([timeout]) 功能:阻塞等待回收进程 参数:超时时间 *multiprocessing创建进程同样是复制父进程的空间代码段,父子进程运行互不影响 *子进程只执行target绑定函数,其余均父进程执行 *Process创建进程中,往往父进程只用来创建和回收进程,具体事件由子进程完成 *multiprosessing创建的子进程中不能使用标准输入
import multiprocessing as mp from time import sleep #编写进程函数 def fun(): sleep(5) print("子进程执行事件") # 创建进程对象 p = mp.Process(target=fun) # 启动进程 p.start() sleep(1) print("==========rrrrr========") # 回收进程 p.join() print("=================================") 进程对象属性 p.name 进程名称 p.pid 进程pid号 p.is_alive() 进程是否在生命周期 p.daemon 设置父子进程的退出关系 *将该属性设置为True则父进程退出,其子进程也会退出 *要求必须在start()前设置 *不会和jion一起使用 from multiprocessing import Process from time import sleep,ctime def fun(): for i in range(3): sleep(2) print(ctime()) p = Process(target=fun,name = "定义名字") p.daemon = True#父进程结束之后,子进程也会结束 p.start() print("Name",p.name) print("pid",p.pid) print("alive",p.is_alive()) # sleep(10) # p.join() 自定义进程类 (Process) 编写流程: 编写子的__init__函数添加属性,super重新加载父类__init__方法 重写Process中run方法 使用 使用自定义类实例化对象 通过对象调用start()创建进程,自动运行run 通过join回收进程 from multiprocessing import Process import time # 自定义进程类 class ClockProcess(Process): def __init__(self,value): self.value = value super().__init__() # 重写方法 def run(self): for i in range(5): print("The time is %s"%time.ctime()) time.sleep(self.value) # 创建进程对象 p = ClockProcess(2) p.start() # print("3333") p.join()