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完成FizzBuzzWhizz问题(拉勾网面试题)示例
May 05 Python
python实现中文分词FMM算法实例
Jul 10 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Python文件和流(实例讲解)
Sep 12 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
Python 求数组局部最大值的实例
Nov 26 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
python实现上传文件到linux指定目录的方法
Jan 03 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
php接口技术实例详解
2016/12/07 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
javascript preload&lazy load
2010/05/13 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
js实现轮播图特效
2020/05/28 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
python中hashlib模块用法示例
2017/10/30 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
自主招生自荐信
2013/12/08 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript