Python多任务编程——获取进程编号

LogicEclipseMaster
• 阅读 53024

获取进程编号的目的:

为了验证主进程和子进程的关系,可知子线程是由哪个主进程创建出来的。

Python获取进程编号id:

#获取当前进程的编号
os.getpid()

#获取父进程的编号
os.getppid()

实现步骤:

1.导入os包

import os

2.获取进程编号、父进程编号

os.getpid()
os.getppid()

3.获取进程名

print(multiprocessing.current_process())

代码实现:

import multiprocessing
import time

#导入os包
import os


def dance():
    #获取dance的进程编号
    print('dance:',os.getpid())
    #获取dance父进程的编号
    print("dance父进程:", os.getppid())
    #获取当前进程 查看是由那个进程执行的
    print('dance:',multiprocessing.current_process())
    for i in range(5):
        print("dance")
        time.sleep(2)

def sing():
    #获取sing进程编号
    print('sing:',os.getpid())
    #获取sing父进程的编号
    print("sing父进程:", os.getppid())
    #获取当前进程  查看是由那个进程执行的
    print('sing:',multiprocessing.current_process())
    for i in range(5):
        print("sing")
        time.sleep(2)


if __name__ == '__main__':

    #获取当前进程(主进程)编号  
    print('main:',os.getpid())
    
    #获取当前进程  查看是由那个进程执行的
    print('main:',multiprocessing.current_process())

    dance_process = multiprocessing.Process(target=dance,name='dance_process')
    print(dance_process)
    sing_process = multiprocessing.Process(target=sing,name='sing_process')
    print(sing_process)


    dance_process.start()
    sing_process.start()

通过运行上面的代码,我们可以发现:

main的进程编号=sing的父进程编号=dance的父进程编号

这样子我们得出dance_process和sing_process是由main建立的子进程。

点赞
收藏
评论区
推荐文章
九章 九章
4年前
Android应用启动速度优化
应用启动流程总结:①点击启动一个App,Launcher进程采用BinderIPC向ActivityManagerService发起startActivity请求;②ActivityManagerService接收到请求后,向zygote进程发送创建进程的请求;③Zygote进程fork出新的子进程,即App进程;④App进程通过Bin
Bill78 Bill78
4年前
Python多进程 - 实现多进程的几种方式
方式一:os.fork()coding:utf8"""pidos.fork()1.只用在Unix系统中有效,Windows系统中无效2.fork函数调用一次,返回两次:在父进程中返回值为子进程id,在子进程中返回值为0"""importospidos.fork()ifpid0:
Stella981 Stella981
3年前
PHP用proc_open新建子进程使用管道通信非阻塞执行PHP脚本
PHP用proc\_open新建子进程使用管道通信非阻塞执行PHP脚本.脚本结束时register\_shutdown\_function回调函数访问管道获取子进程输出的数据.例子1(popen):<?phpfunctionfoo(){echodate('YmdH:i:s')."\n";
Stella981 Stella981
3年前
JVM快速调优命令汇总
CPU监控:进程和线程观察哪个进程CPU和内存占比高top观察进程中的线程,哪个线程CPU和内存占比高topHppidtop16837topHp16837定位具体java进程定位具体java进程jps
Stella981 Stella981
3年前
Gevent简明教程
1、前述进程线程协程异步并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。多进程编程在python中有类似C的os.fork,更高层封装的有multiprocessing标准库多线程编程python中有Thread和threading异步编程在linux下主要有三种实现selec
Stella981 Stella981
3年前
Linux fork() 系统调用
    在Linux中,当程序调用fork()函数时,系统会创建新的进程,为其分配资源(存储数据和代码的空间),然后把原来进程的所有值都复制到新进程中,只有少量数值与原来的进程值不同,相当于复制了本身。      fork()系统调用,被调用一次,却能返回两次:父进程和子进程各自返回一次。可以通过fork()的返回值的不同来区分父进程和子进程。
Wesley13 Wesley13
3年前
1、简单排查java应用CPU飙高的线程问题
1\.获取要查看的进程的IDpsaux|grepxxx2\.查看此进程下的线程信息topHp<pidtopp<pid   按shifthtopHp<pid    3\.查看栈信息jstac
Stella981 Stella981
3年前
RabbitMQ基本示例,轮询机制,no_ack作用
一、RabbitMQ简介:'''RabbitMQ就是消息队列之前不是学了Queue了吗,都是队列还学RabbitMQ干嘛?干的事情是一样的Python的Queue有两个,一个线程Queue生产者消费者模型,一个进程Queue用于父进程与子进程交互两个完全独
Stella981 Stella981
3年前
Electron 渲染进程与渲染进程之间的实时通信 (实时触发及接收消息)
1、首先在渲染进程A里面获取到所有的窗口id信息,然后给所有的窗口发送事件remote.webContents.getAllWebContents().forEach((item,index){2、在所需要接收内容的渲染进程里面,通过ipcRenderer.on兼容,即可实时收到消息ipcRe
Stella981 Stella981
3年前
Linux等待队列原理与实现
当进程要获取某些资源(例如从网卡读取数据)的时候,但资源并没有准备好(例如网卡还没接收到数据),这时候内核必须切换到其他进程运行,直到资源准备好再唤醒进程。waitqueue(等待队列) 就是内核用于管理等待资源的进程,当某个进程获取的资源没有准备好的时候,可以通过调用 add_wait_queue() 函数把进程添加到 waitqueue
Stella981 Stella981
3年前
Linux常用命令二
\TOC\Linux常用命令二之前那个太多了,以后新收集的就记在这里.进程挂起与恢复关键命令:CTRLZ将进程挂起到后台(暂停而已)jobs命令显示当前暂停的进程(可以看到程序的编号)bg%N命令使第N个任务在后台运行(%前有空格)