简单分析Python中用fork()函数生成的子进程
作者:goldensun 发布时间:2021-11-24 02:48:02
标签:Python
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语句的执行顺序是不确定的,子、父进程的执行顺序由操作系统的调度算法来决定。


猜你喜欢
- 10月9日是国庆中秋黄金周后上班的第一天,当天近8亿人次逛淘宝,即淘宝网每分钟完成43.47万元的交易,创下国内网购单天交易最高纪录。从销售
- 本文实例讲述了PHP简单实现正则匹配省市区的方法。分享给大家供大家参考,具体如下:省市区正则匹配preg_match('/(.*?(
- 这次让我们一个用 Python 做一个小工具:将动态 GIF 图片倒序播放!GIF(Graphics Interchange Format)
- 前言字符串是 字符的序列 。字符串基本上就是一组单词。我几乎可以保证你在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内容
- 一、concurrent模块的介绍concurrent.futures模块提供了高度封装的异步调用接口ThreadPoolExecutor:
- 问题背景用户反馈说当与外部客户端进行 FTP 传输时,可以成功登录,但无法传输任何数据。总之 FTP 传输失败,需要来弄清楚到底发生了什么。
- 大家都见过某网页中的恶意广告,你关闭了又出来了!为何,JS来告诉你HTML<body> <h3 class=&
- 项目中涉及到一些加密解密的需求,了解并尝试了几种加密解密方法,以下:方法一:md5加密注意:md5的特性就是只能加密,所以用md5加密的时候
- 引入Gridgrid=Grid() # 可以分别调整上下左右的位置,可以是百分比,也可以是具体像素,如pos_top="50px&
- innewDropList = [9,10,11,12,22,50,51,60,61]newDB = newDB[newDB['gr
- 简介本文主要介绍如何通过pyplot来绘制函数图。主要绘制函数如下: - 一元一次函数 - 一元二次函数 - 指数函数 - 自然对数函数 -
- 本文实例讲述了Python使用文件锁实现进程间同步功能。分享给大家供大家参考,具体如下:简介在实际应用中,会出现这种应用场景:希望shell
- 一、JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON建
- Erase语句:重新初始化固定数组的元素,并释放动态数组的存储空间。用法: Era
- 如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助!运行结果如下:代码如下:impo
- 在使用matplotlib画图时,少不了对性能图形做出一些说明和补充。一般情况下,loc属性设置为'best'就足够应付了p
- ./当前目录 /网站主目录 ../上层目录 ~/网站虚拟目录 如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\wwwroo
- 环境win10Python:3.6.7Django:2.2.7运行效果1、创建 Django 项目# 创建Download项目django-
- 困扰我很久问题终于在昨天被解决了。其实问题很简单<% =now %>老是显示12小时制,总是出现上午、下午。这个问题虽然很小,但
- 代码如下:'===================================== '获得文件后缀 '=====