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()

 

原文地址:http://www.cnblogs.com/chenwandong/p/16895922.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性