Python基础-进程的使用

一、进程的使用

1.导入进程模块:import multiprocessing

(1)Process进程类的语法结构

Process([group[,target[,name[,args[,kwargs]]]]])

group:指定进程组,目前只能使用None

target:执行的目标任务名(一般为执行的函数名)

name:进程名

args:以元组方式给执行任务传参(元组方式给执行函数传参)

kwargs:以字典方式给执行任务传参(字典方式给执行函数传参)

(2)Process创建的实例对象常用方法

start():启动子进程实例(创建子进程)

join([timeout]):是否等待子进程执行结束,或等待多少秒

terminate():不管任务是否完成,立即终止子进程

(3)Process创建的实例对象常用属性

name:当前进行的别名,默认为Process-N,N为从1开始递增的整数

pid:当前进程的pid(进程号)

2.多进程完成多任务示例

(1)代码

import multiprocessing
import time

def run_process():
    """子进程要执行的代码"""
    while True:
        print("-------2---------")
        time.sleep(1)

if __name__ == '__main__':
    # 创建子进程
    sub_process = multiprocessing.Process(target=run_process)
    # 启动子进程
    sub_process.start()
    while True:
        print("-----1-------")
        time.sleep(1)

(2)结果

3.获取进程pid

(1)代码

import multiprocessing
import os

def work():
    # 获取当前进程
    current_process = multiprocessing.current_process()
    print("目前正在工作的进程:", current_process)
    # 获取当前进程id,用os模块获取当前进程,显示应一致
    print("当前工作进程号:", current_process.pid, os.getpid())
    # 获取父进程号
    print("父进程号:", os.getppid())

if __name__ == '__main__':
    # 获取当前主进程
    main_process = multiprocessing.current_process()
    print("主进程:", main_process)
    print("主进程号:", main_process.pid)

    # 开启一个子线程
    sub_process = multiprocessing.Process(target=work)
    sub_process.start()
    # sub_process.join() 有join函数,下面的print函数会在最后打印,即等待子进程全部结束再继续执行
    print("主进程结束")

(2)结果

4.带有参数的进程

(1)代码

import multiprocessing

def user_info(name,age):
    print(name, age)
    current_process = multiprocessing.current_process()
    print("当前运行的进程:", current_process.name)
    print("当前运行的进程号:", current_process.pid)

if __name__ == '__main__':
    # 创建并开启子进程一,传参方式一:元组传参
    sub_process = multiprocessing.Process(target=user_info, name="sub_process", args=("suner", 20))
    sub_process.start()

    # 创建并开启子进程二,传参方式二:字典传参
    sub_process_2 = multiprocessing.Process(target=user_info,name="sub_process_2", kwargs={"name":"sun", "age":19})
    sub_process_2.start()

(2)结果

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/87686518
今日推荐