码迷,mamicode.com
首页 > 编程语言 > 详细

【Python高级编程002 ● 多任务编程 ● 改写进程编号】

时间:2020-09-16 12:14:17      阅读:26      评论:0      收藏:0      [点我收藏+]

标签:进程组   编程   get   int   multi   back   height   对象   bsp   

 ---------Python基础编程---------

Author : AI菌


 

【内容讲解】

一、获取进程编号的目的
    获取进程编号可以查看父子进程的关系,
    可以得知子进程是由那个主进程创建出来的。

二、获取进程编号的方式
    1、获取当前进程编号
        os.getpid()
    2、获取当前父进程编号
        os.getppid()

 

【代码演示】

"""
一、获取进程编号的目的
    获取进程编号可以查看父子进程的关系,
    可以得知子进程是由那个主进程创建出来的。

二、获取进程编号的方式
    1、获取当前进程编号
        os.getpid()
    2、获取当前父进程编号
        os.getppid()
"""

# 1.导入multiprocessing包、延时time模块和os模块
import multiprocessing
import time
import os


# 定义跳舞的任务函数
def dance():
    # 扩展: 获取当前代码的进程对象
    dance_process = multiprocessing.current_process()
    print("dance_process:", dance_process)
    # 获取当前进程(子进程)的编号
    dance_pid = os.getpid()
    # 获取当前进程的父进程编号
    dance_ppid = os.getppid()
    # 打印pid
    print("dance_pid:", dance_pid)
    print("dance_ppid:", dance_ppid)

    for i in range(3):  # i=0,1,2
        print("跳舞中...")
        # 延时0.2秒
        time.sleep(0.2)


# 定义唱歌的任务函数
def sing():
    # 扩展: 获取当前代码的进程对象
    sing_process = multiprocessing.current_process()
    print("sing_process:", sing_process)
    # 获取当前进程(子进程)的编号
    sing_pid = os.getpid()
    # 获取当前进程的父进程编号
    sing_ppid = os.getppid()
    # 打印pid
    print("sing_pid:", sing_pid)
    print("sing_ppid:", sing_ppid)

    for i in range(3):  # i=0,1,2
        print("唱歌中...")
        time.sleep(0.2)


# 判断是否是模块, 有快捷键: main
if __name__ == __main__:
    # 扩展: 获取当前代码的进程对象
    main_process = multiprocessing.current_process()
    print("main_process:", main_process)
    # 获取当前进程(主进程)的编号
    main_pid = os.getpid()
    print("main_pid:", main_pid)

    # 2. 创建进程对象
    # group : 进程组,目前只能使用None, 一般不要管它
    # target: 指定执行的任务名
    # name: 进程名,如果不指定默认的命名格式: Process-1, process-2...
    sub_process1 = multiprocessing.Process(target=dance, name="sub_process1")
    sub_process2 = multiprocessing.Process(target=sing, name="sub_process2")
    # 打印进程对象
    print("sub_process1:", sub_process1)
    print("sub_process2:", sub_process2)

    # 3.启动进程执行对应的任务
    sub_process1.start()
    sub_process2.start()

 

【运行结果】

main_process: <_MainProcess(MainProcess, started)>
main_pid: 8352
sub_process1: <Process(sub_process1, initial)>
sub_process2: <Process(sub_process2, initial)>
dance_process: <Process(sub_process1, started)>
dance_pid: 128
dance_ppid: 8352
跳舞中...
sing_process: <Process(sub_process2, started)>
sing_pid: 16556
sing_ppid: 8352
唱歌中...
跳舞中...
唱歌中...
跳舞中...
唱歌中...

 

【往期精彩】

?【Python基础编程196 ● 读取文件的4种方式】
?【Python基础编程197 ● 读取文件的4种方式】
?【Python基础编程198 ● 读取文件的4种方式】
?【Python基础编程199 ● Python怎么读/写很大的文件】
?【Python基础编程200 ● 读取文件的4种方式】
?【Python基础编程201 ● 读取文件的4种方式】
?【Python基础编程202 ● 读取文件的4种方式】
?【Python基础编程203 ● 读取文件的4种方式】

 

【加群交流】

技术图片 技术图片 技术图片 技术图片

【Python高级编程002 ● 多任务编程 ● 改写进程编号】

标签:进程组   编程   get   int   multi   back   height   对象   bsp   

原文地址:https://www.cnblogs.com/hezhiyao/p/13603155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!