对python中的os.getpid()和os.fork()函数详解

 更新时间:2019年08月08日 15:48:13   作者:crazyBird_GJY  
今天小编就为大家分享一篇对python中的os.getpid()和os.fork()函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

import os
import sys
import time
 
processNmae = 'parent'
 
print "Program executing ntpid:%d,processNmae:%s"%(os.gitpid(),processNmae)
 
#attempt to fork child process
try:
  forkPid = os.fork()
except OSError:
  sys.exit("Unable to create new process.")
 
# Am I parent process?
if forkPid != 0:
  print "Parent executingn"+"tpid:%d,forkPid:%d,processNmae:%s"%(os.getpid(), forkPID,processName)
 
# Am I child process?
elif forkPID == 0:
    processName = "child"
    print "Child executingn" + "tpid: %d, forkPID: %d, processName: %s" % (os.getpid(), forkPID,processName)<br>
print "Process finishingntpid: %d, processName: %s" % (os.getpid(), processName)

程序每次执行时,操作系统就会创建一个新的进程来运行程序指令。进程还可以调用os.fork,要求操作系统新建一个进程。

“父进程”是调用os.fork的进程。父进程所创建的任何进程都是子进程。

每个进程都有一个不重复的“进程ID号”,或称“pid”,它对进程进程进行标识。

进程调用fork函数时,操作系统会新建一个子进程,它本质上与父进程完全相同。子

进程从父进程继承了多个值的拷贝,比如全局变量和环境变量。两个进程唯一的区别就是fork的返回值。

child(子)进程接收返回值为0,而父进程接收子进程的pid作为返回值。调用fork函数后,两个进程并发执行同一个程序,

首先执行的是调用了fork之后的下一行代码。父进程和子进程既并发执行,又相互独立;也就是说,它们是“异步执行”的。

import os 
pid=os.fork() #fork反复拷贝 
if pid==0: 
  print("A",os.getpid(),os.getppid()) 
else: 
  print("B",os.getpid(),os.getppid()) 
 
# os.getpid()获取当前进程id   os.getppid()获取父进程id 

以上这篇对python中的os.getpid()和os.fork()函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python使用Asyncio实现检查网站状态

    Python使用Asyncio实现检查网站状态

    这篇文章主要为大家详细介绍了Python如何使用Asyncio实现检查网站状态,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • Python中tkinter无法同时显示多个image的解决方法及pack与place解析

    Python中tkinter无法同时显示多个image的解决方法及pack与place解析

    这篇文章主要介绍了Python中tkinter无法同时显示多个image的解决方法及pack与place解析,本文给大家分享问题原因解析及解决方案,需要的朋友可以参考下
    2023-02-02
  • Python处理文本文件中控制字符的方法

    Python处理文本文件中控制字符的方法

    最近在使用Python的时候遇到过文档中出现控制字符报错的问题。想着总结一下,方便以后需要或这同样遇到问题的朋友,下面这篇文章主要介绍了Python处理文本文件中控制字符的解决方法,需要的朋友可以参考借鉴。
    2017-02-02
  • Python设计模式之状态模式原理与用法详解

    Python设计模式之状态模式原理与用法详解

    这篇文章主要介绍了Python设计模式之状态模式原理与用法,简单描述了状态模式的概念、原理并结合实例形式分析了Python实现与使用状态模式的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • python中pd.Series()函数的使用

    python中pd.Series()函数的使用

    本文主要介绍了python中pd.Series()函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • python中的opencv和PIL(pillow)转化操作

    python中的opencv和PIL(pillow)转化操作

    这篇文章主要介绍了python中的opencv和PIL(pillow)转化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 终止python代码运行的3种方式详析

    终止python代码运行的3种方式详析

    这篇文章主要给大家介绍了关于终止python代码运行的3种方式,python是解释运行的程序,程序进入死循环或者其它异常都会导致程序无法正常结束,需要的朋友可以参考下
    2023-07-07
  • Python序列操作之进阶篇

    Python序列操作之进阶篇

    序列sequence是python中最基本的数据结构,本文是Python序列操作的进阶篇,本文先对序列做一个简单的概括,之后将详细讲解下关于序列的操作方法。文中通过示例代码介绍的很详细,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • 详解python 拆包可迭代数据如tuple, list

    详解python 拆包可迭代数据如tuple, list

    拆包是指将一个结构中的数据拆分为多个单独变量中。下面通过本文给大家介绍python 拆包可迭代数据如tuple, list的相关资料,需要的朋友参考下吧
    2017-12-12
  • Python PySpider爬虫框架安装使用教程

    Python PySpider爬虫框架安装使用教程

    PySpider是一个Python编写的分布式网络爬虫框架,它可以帮助开发者快速构建和部署爬虫,并支持爬虫任务的分布式运行,PySpider基于Twisted网络框架和MongoDB数据库,具有高效、稳定、易用等特点,同时还提供了一套Web界面,可以方便地查看爬虫任务的运行状态和结果
    2023-11-11

最新评论