首页 > 系统相关 >python multiprocessing 多进程

python multiprocessing 多进程

时间:2022-11-16 15:02:27浏览次数:33  
标签:__ name python multiprocessing 进程 eat target

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

相关文章

  • Python的类和对象
    1.类和对象的定义类用class关键字声明,类中的变量成为属性,函数成为方法,定义方法的时候,需要带上self参数。例:classPerson:#默认继承Object父......
  • c++调用python
    cmakelistscmake_minimum_required(VERSION3.20)project(python_test)set(PYTHON_INCLUDE_DIRS"/home/ubuntu/miniconda3/envs/python38/include/python3.8")INCLUD......
  • Linux下进程间通信方式之管道、信号、共享内存、消息队列、信号量、套接字
    /*1,进程间通信(IPC)Inter-ProcessCommunication比较好理解概念的就是进程间通信就是在不同进程之间传播或交换信息。2,linux下IPC机制的分类:管道、信号、共享内存、......
  • windows下开机自启python服务
    一、编辑statrtRunRecService.bat文件@echooffcallactivateD:\applications\Anaconda\envs\py_36_flaskechopwddiris%cd%cd/dD:\work_dwy\AisaBankRecon......
  • 习题整理【Python】
    习题整理【Python】​​前言​​​​Python​​​​Python_1​​​​Python_2​​​​Python_3​​​​Python_4​​​​Python_5​​​​Python_6​​​​Python_7​​​​......
  • 微软开源最强Python自动化神器Playwright!不用写一行代码!自动生成代码还竟然如此流畅!妈
    安装#安装playwright库pipinstallplaywright#安装浏览器驱动文件python-mplaywrightinstall#再安装playwrightinstall要求:python版本3.7+使用Playwright无需写一行......
  • 【Python基础】科学计算库Scipy简易入门
    0.导语Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy......
  • 08python元组
    这一篇问文章主要介绍元组的相关知识。元组:不可修改的序列与列表一样,元组也是序列,唯一的差别在于元组是不能修改的(同样的,字符串也不能修改)。元组的语法很简单。>>>......
  • Python 操作MySQL
    目录pymysql的使用起手式--Python连接MySQL的几种方式:1.方式一:config+db+cur.execute(变量替换)2.方式二:conn+execute(sql)3.方式三pandas+config+db+read_sql4.方式......
  • 关于python文件操作(转)
    最近想把Excel转为xml文件,所以就在网上找了一些excel的访问库,结果发现了一个python的excel库,但是自已不知道python是怎么把文本写入硬盘的。所以在网上找到了这个python关于......