1 获取进程id
当我们运行py文件时,该程序的运行就是一个进程 ,如果在该进程中又创建了其他进程,那么该进程就是主进程,创建的其他进程就是子进程。
下面我们通过通过os库中的方法,打印当前进程和父进程的id来验证这一关系。
os.getpid() 获取当前进程id
os.getppid() 获取父进程id
二、多进程的实现
进程的创建步骤
1、导入进程包
import multiprocessing
2、通过进程类创建进程对象
进程对象 = multiprocessing.Process(target=*)
此处target的值可以是函数名称
3、启动进程执行任务
进程对象.start()
看代码示例
import multiprocessing
import time
def drink():
for i in range(3):
print("喝汤……")
time.sleep(1)
def eat():
for i in range(3):
print("吃饭……")
time.sleep(1)
if __name__ == '__main__':
#target:指定函数名
drink_process = multiprocessing.Process(target=drink)
eat_process = multiprocessing.Process(target=eat)
drink_process.start()
eat_process.start()
运行结果
可以看到喝汤和吃饭交叉进行
三、带参多进程
这地方用到的是args和kwargs,其中args是使用元素组的方式给指定任务传参,kwargs是使用字典方式给指定任务传参。
args使用方式
进程对象 = multiprocessing.Process(target=*,args=(*,))
此处注意,若只有一个元素,那个逗号也是不可以省略的。
kwargs使用方式
进程对象 = multiprocessing.Process(target=*,kwargs={"变量名": 变量值})
还是以上面吃饭喝汤为例子写代码
import time
import multiprocessing
def eat(num,name):
for i in range(num):
print(name+"吃一口……")
time.sleep(1)
def drink(num,name):
for i in range(num):
print(name+"喝一口……")
time.sleep(1)
if __name__ == '__main__':
# target:指定执行的函数名
# args:使用元组方式给指定任务传参
# kwargs:使用字典方式给指定任务传参
eat_process = multiprocessing.Process(target=eat,args=(3,"giao"))
drink_process = multiprocessing.Process(target=drink,kwargs={"num": 4,"name":"giao"})
eat_process.start()
drink_process.start()
执行结果
import multiprocessing import time import os print(os.getpid(),os.getppid()) def eat(name,num): for i in range(num): print(f'{name}吃了一口米饭。。。',os.getpid(),os.getppid(),multiprocessing.Process()) info_t = "my name \tis Neo" print("t", info_t) time.sleep(1) def drink(name,num): for i in range(num): print(f'{name}喝了一口二锅头。。。',os.getpid(),os.getppid(),multiprocessing.Process()) time.sleep(1) if __name__ == '__main__': eat_process = multiprocessing.Process(target=eat,kwargs={"name":"张三","num":10}) drink_process = multiprocessing.Process(target=drink,kwargs={"name":"张三","num":10}) eat_process.start() drink_process.start()
标签:__,name,python,multiprocessing,进程,eat,target From: https://www.cnblogs.com/chenwandong/p/16895922.html