python os.fork() 循环输出方法


Posted in Python onAugust 08, 2019

先看下面这段代码:

import os
 
 
def main():
  for i in range(0, 2):
    os.fork()
    print 'Hello'
 
 
if __name__ == '__main__':
  main()

猜测一下,会输出几行Hello。

答案是:

Hello
Hello
Hello
Hello
Hello
Hello

6行!为什么呢?

首先,你要明白os.fork()创建的子进程会接着下一行代码继续执行,它有返回值,返回值可以为0表示子进程或者大于0表示父进程pid,os.getpid()返回的是当前进程的pid,那么我们再改改输出来看得更直观一些吧:

import os
 
 
def main():
  for i in range(0, 2):
    pid = os.fork()
    print "Hello", i, os.getpid(), pid
 
 
if __name__ == '__main__':
  main()

输出是这样的:

Hello 0 9760 9761
Hello 0 9761 0
Hello 1 9760 9762
Hello 1 9762 0
Hello 1 9761 9763
Hello 1 9763 0

这就很容易解释了:

第一轮循环,父进程创建了一个子进程P1然后打印,子进程P1接着下面的代码运行,打印。之后进入第二轮循环;

第二轮循环,父进程创建了一个子进程P2然后打印,子进程P2接着下面的代码运行,打印。子进程P1再创建了一个子进程P12然后打印,子进程P12接着下面的代码运行,打印。之后循环结束,共打印六次。

如果进行3轮循环打印多少次呢,答案是14次,读者可以自行验证一下。

水平有限,如有错误欢迎指正!

以上这篇python os.fork() 循环输出方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的requests网络编程包使用教程
Jul 11 Python
python实现二叉查找树实例代码
Feb 08 Python
pytorch构建网络模型的4种方法
Apr 13 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
人工神经网络算法知识点总结
Jun 11 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python绘制BA无标度网络示例代码
Nov 21 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
python基于socket函数实现端口扫描
May 28 Python
python基于selenium爬取斗鱼弹幕
Feb 20 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 #Python
在Python中os.fork()产生子进程的例子
Aug 08 #Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 #Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 #Python
python批量修改ssh密码的实现
Aug 08 #Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 #Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 #Python
You might like
第三章 php操作符与控制结构代码
2011/12/30 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
python字典的值可以修改吗
2020/06/29 Python
详解Python 中的容器 collections
2020/08/17 Python
numba提升python运行速度的实例方法
2021/01/25 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
学雷锋标语
2014/06/25 职场文书
文员求职信
2014/07/15 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
文明礼貌主题班会
2015/08/14 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
php去除deprecated的实例方法
2021/11/17 PHP