简单分析Python中用fork()函数生成的子进程

 更新时间:2015年05月04日 10:06:10   投稿:goldensun  
这篇文章主要介绍了Python中用fork()函数生成的子进程,分析子进程与父进程的执行顺序,需要的朋友可以参考下

python的os module中有fork()函数用于生成子进程,生成的子进程是父进程的镜像,但是它们有各自的地址空间,子进程复制一份父进程内存给自己,两个进程之 间的执行是相互独立的,其执行顺序可以是不确定的、随机的、不可预测的,这点与多线程的执行顺序相似。 

import os
def child():
  print 'A new child:', os.getpid()
  print 'Parent id is:', os.getppid()
  os._exit(0)
def parent():
  while True:
    newpid=os.fork()
    print newpid
    if newpid==0:
      child()
    else:
      pids=(os.getpid(),newpid)
      print "parent:%d,child:%d"%pids
      print "parent parent:",os.getppid()    
    if raw_input()=='q':
      break
parent()

    在我们加载了os模块之后,我们parent函数中fork()函数生成了一个子进程,返回值newpid有两个,一个为0,用以表示子进程,一个是大于 0的整数,用以表示父进程,这个常数正是子进程的pid. 通过print语句我们可以清晰看到两个返回值。如果fork()返回值是一个负值,则表明子进程生成不成功(这个简单程序中没有考虑这种情况)。如果 newpid==0,则表明我们进入到了子进程,也就是child()函数中,在子进程中我们输出了自己的id和父进程的id。如果进入了else语句, 则表明newpid>0,我们进入到父进程中,在父进程中os.getpid()得到自己的id,fork()返回值newpid表示了子进程的id,同时我们输出了父进程的父进程的id. 通过实验我们可以看到if和else语句的执行顺序是不确定的,子、父进程的执行顺序由操作系统的调度算法来决定。

相关文章

  • 通过Python中的http.server搭建文件上传下载服务功能

    通过Python中的http.server搭建文件上传下载服务功能

    通过本文我们学习了如何使用Python的http.server模块搭建一个基本的HTTP服务器,并实现文件下载服务,介绍了如何设置服务器端口、自定义文件目录、定制HTTP响应头以及处理GET请求,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Python使用execjs执行包含中文参数的JavaScript

    Python使用execjs执行包含中文参数的JavaScript

    爬虫的开发过程中,往往需要对JS进行模拟,简单或者通用的还可以在Python中模拟或者找到对应的第三方库,但是复杂的就可能不好实现了,下面这篇文章主要给大家介绍了关于Python使用execjs执行包含中文参数的JavaScript的相关资料,需要的朋友可以参考下
    2022-03-03
  • Python基于ImageAI实现图像识别详解

    Python基于ImageAI实现图像识别详解

    ImageAI是一个面向计算机视觉编程的Python库,支持最先进的机器学习算法。本文将利用ImageAI实现图像识别功能,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-02-02
  • Python实现计算机时长管理程序

    Python实现计算机时长管理程序

    这篇文章主要为大家详细介绍了如何使用Python编写一个包含倒计时,密码验证,音频控制,系统进程监控与终止等功能的程序,需要的可以了解下
    2025-02-02
  • Pycharm挂代理后依旧插件下载慢的完美解决方法

    Pycharm挂代理后依旧插件下载慢的完美解决方法

    狠多朋友在使用Pycharm插件时,反应下载速度很慢,挂载了代理还是不够,怎么解决这一问题呢,下面小编给大家代理了Pycharm插件下载慢的完美解决方法,需要的朋友参考下吧
    2021-08-08
  • 用selenium解决滑块验证码的实现步骤

    用selenium解决滑块验证码的实现步骤

    验证码作为一种自然人的机器人的判别工具,被广泛的用于各种防止程序做自动化的场景中,下面这篇文章主要给大家介绍了关于用selenium解决滑块验证码的实现步骤,需要的朋友可以参考下
    2023-02-02
  • Python中if语句的基本格式实例代码

    Python中if语句的基本格式实例代码

    在Python中,if语句用于根据条件执行不同的代码块。本文详细介绍了Python中if语句的基本格式使用方法及实例代码,有需要的同学可以参考阅读
    2023-05-05
  • Python批量自动修改文件名,按指定的格式自动命名方式

    Python批量自动修改文件名,按指定的格式自动命名方式

    这篇文章主要介绍了Python批量自动修改文件名,按指定的格式自动命名方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Pandas缺失值2种处理方式代码实例

    Pandas缺失值2种处理方式代码实例

    这篇文章主要介绍了Pandas缺失值2种处理方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python使用Scapy实现构造特殊数据包

    Python使用Scapy实现构造特殊数据包

    Scapy是一款Python库,可用于构建、发送、接收和解析网络数据包,这篇文章主要为大家详细介绍了python如何使用Scapy构造特殊数据包,有需要的可以参考下
    2023-11-11

最新评论