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中list循环语句用法实例
Nov 10 Python
Python实现从百度API获取天气的方法
Mar 11 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
Python异常的检测和处理方法
Oct 26 Python
python检测IP地址变化并触发事件
Dec 26 Python
Python实现的文轩网爬虫完整示例
May 16 Python
对python 调用类属性的方法详解
Jul 02 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Python pip install之SSL异常处理操作
Sep 03 Python
python爬虫破解字体加密案例详解
Mar 02 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 版获取重定向后的地址(代码)
2013/06/26 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jQuery的框架介绍
2016/05/11 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
十岁生日家长答谢词
2014/01/17 职场文书
五好党支部事迹材料
2014/02/06 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
购房个人委托书范本
2014/10/11 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android