首页 > 其他分享 >10月26日Process的其它小用法(了解的知识点)

10月26日Process的其它小用法(了解的知识点)

时间:2023-10-26 19:12:01浏览次数:32  
标签:__ 知识点 26 查看 10 pid print 进程 os

目录

Process的其它小用法(了解的知识点)

下面的知识点是了解的知识点,但是也要会用,分别是pid和ppid的查看方式

pid的查看方式

方式一: 直接输出查看

from multiprocessing import Process
import time


def task():
    print('子进程开启')
    time.sleep(2000)
    print('子进程关闭')

if __name__ == '__main__':
    p = Process(target=task)
    p.start()
    print(p.pid)#查看pid的代码一定要写在start()之后

    print('主')

这个代码里面就是直接输出p.pid的值就知道pid的值了,为什么我把睡眠调了两千秒?因为我要保证这个子进程这段时间内不会结束,然后我利用这个pid号在终端里面查看pid对应的进程

结果如图

结果说明了我在终端里面通过pid就能找到对应的进程。

方式二多调用几个模块(os)和(current_Process)

代码如下

#其它查看pid的方法
import time,os#这里多调用了os模块
from multiprocessing import Process, current_process#这里还调用了current_Process这个方法


def task():
    print('子进程开启')
    print('在子进程中查看自己的pid', current_process().pid)#在子进程中查看自己的pid的另一种方法
    print('在子进程中查看自己的pid', os.getpid())#这是另一种查看pid的方式
    time.sleep(10)
    print('子进程关闭')


if __name__ == '__main__':
    p = Process(target=task)
    p.start()
    print('在主进程中查看子进程的pid', p.pid)  # 查看pid的代码一定要写在start()之后

    print('主')

结果如下

这两个方法也是可以查看的

父进程的pid值如何查看呢?

在子进程里查看父进程的pid值需要用到另一个方法也就是getppid()

代码如下

#查看父进程pid的方法
import time,os#这里多调用了os模块
from multiprocessing import Process


def task():
    print('子进程开启')
    print('在子进程中查看父进程的pid', os.getppid())#这里查看父进程的pid,使用的就是getppid()的方法
    time.sleep(10)
    print('子进程关闭')


if __name__ == '__main__':
    p = Process(target=task)
    p.start()
    print('在主进程中查看子进程的pid', p.pid)  # 查看pid的代码一定要写在start()之后

    print('主')

然后结果如下

同时也存在一个pid就是主进程的父进程的pid,那么子进程、主进程以及主进程的父进程它们三个之间的关系就类似孙子、儿子、爷爷的关系。

如何查看主进程的父进程的pid呢?就是在主进程里面使用getppid()

# 查找主进程的父进程

import time, os  # 这里多调用了os模块
from multiprocessing import Process


def task():
    print('子进程开启')
    print('在子进程中查看父进程的pid', os.getppid())  # 这里查看父进程的pid,使用的就是getppid()的方法
    print('在子进程里面查看子进程的pid', os.getpid() )
    time.sleep(1000)
    print('子进程关闭')


if __name__ == '__main__':
    p = Process(target=task)
    p.start()
    # 这里查看主进程的父进程
    print('查看主进程的父进程的pid', os.getppid())

    print('主')

结果如图

然后终端的情况

大概方式

"""
os.getpid()#获取当前进程的pid
os.getppid()#获取当前进程的父进程的pid
pid#获取当前进程的子进程pid
"""

这里总结一下子进程、主进程、主进程的父进程三者的关系以及如何诞生的

主进程:是启动其它进程的进程,通常叫父进程,主要功能负责创建、管理和操控子进程。

子进程:是主进程创建的新进程。用于执行特定的任务或操作

主进程的父进程:是启动主进程的进程,通常情况它就是操作系统本身

工作流程:主进程的父进程启动主进程,主进程此时调用多进程库(如现在的multiprocessing)来创建一个或多个子进程。子进程被创建成功后就会继承主进程的代码、数据以及资源(和类与类之间的继承思路基本一致),同时它的执行与其它子进程是独立的

可以这么理解就是先有你爷(主进程的父进程)创造了你的父亲(主进程)然后再由你父亲创建了你(子进程)。这么一说就能理清了

标签:__,知识点,26,查看,10,pid,print,进程,os
From: https://www.cnblogs.com/slzjb/p/17790152.html

相关文章

  • 2023.10.26日报
    今天主要在写C#的程序,是B/S结构的实验作业不得不说,虽然是C#程序,但是和java语法也差不多今天实现了一个登录、管理员的部分功能学习时间五小时  ......
  • 使用NvicatPremium时,Mysql数据库插入数据时,报错1064
    使用navicatPremium新版本时,插入数据,显示错误1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear''choose'('ChooseNo','SNo','CNo','......
  • 线程死循环中的sleep,误差10ms以上
    线程函数里是死循环,其中需要sleep1ms,即1ms周期执行死循环。但是经示波器测试发现至少10ms以上。【已测试的方法】Sleep(1);  //WindowsapiWaitForSingleObject(hThread,1);//Windowsapistd::this_thread::sleep_for(std::chrono::milliseconds(1)); //c++api【原......
  • 文心一言 VS 讯飞星火 VS chatgpt (121)-- 算法导论10.4 2题
    二、用go语言,给定一个n结点的二叉树,写出一个O(n)时间的递归过程,将该树每个结点的关键字输出。文心一言:在Go语言中,你可以使用递归函数来遍历二叉树的所有节点,并输出每个节点的关键字。以下是一个示例代码:packagemainimport"fmt"//TreeNode结构定义typeTree......
  • 10月26日Process的join用法
    目录Process的join用法Process的join用法为什么会有这个方法呢?是这样的如果我有一个需求就是子进程运行完了在运行主进程,那么这个该如何实现?第一种方式就是用time模块#这里有一个需求就是子进程运行完在运行主进程,这个该如何实现?#方式一:用time模块,虽然可以,但是每个电脑的......
  • 刷题记录 2023-10-26
    最近需要刷一点博弈论的题目LG-1288\(\Rightarrow\)题目链接可以想到,如果可操作序列的长度是奇数,那么先手必胜,如果是偶数,那么先手必败。LG-1290\(\Rightarrow\)题目链接设\(f(i,j)\)表示当前较大的石子堆和较小的石子堆的大小分别为\(i,j\),先手者是否存在必胜策略。可......
  • (2023.10.26)kdump
    https://dandelioncloud.cn/article/details/1564778026242371586https://www.cnblogs.com/ccccxy/articles/14382858.htmlhttps://blog.csdn.net/u012294613/article/details/122025017https://blog.csdn.net/gjioui123/article/details/128083045https://community.nxp.......
  • 2023-2024-1 20211108_20211120_20211103_20211125 实验一:开发环境的熟悉 小组实验过
    实验课小组成员20211108俞振阳、20211120刘钟徽、20211103白皓宇、20211125苗靖章实验一-1-交叉编译环境-(使用自己笔记本电脑)实验题目要求实验三人一组可以使用自己的笔记本,也可以使用实验室台式机,使用实验室机器的不用做本题安装老师提供的software目录中的VMware-works......
  • 10月《中国数据库行业分析报告》已发布,深度剖析甲骨文大会Oracle技术新趋势
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生态发展,目前已更至第十七期,并发布了共计1......
  • 反序列化加命令执行2023/10/25
    #[SWPUCTF2022新生赛]1z_unserialize<?phpclasslyh{public$url='NSSCTF.com';public$lt;public$lly;function__destruct(){$a=$this->lt;$a($this->lly);}}unserialize($_POST['nss'......