zoukankan      html  css  js  c++  java
  • 【Python高级编程002 ● 多任务编程 ● 改写进程编号】

     ---------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种方式】

    【加群交流】



  • 相关阅读:
    Java实现蓝桥杯VIP 算法训练 找公倍数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    Java实现 蓝桥杯VIP 算法训练 水仙花数
    XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相)
    使用IRP进行文件操作
    Inline Hook NtQueryDirectoryFile
    VC提交网页表单(一共八篇)
    C++ Socket UDP "Hello World!"
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/13603155.html
Copyright © 2011-2022 走看看