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中用Spark模块的使用教程
Apr 13 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
简单谈谈Python流程控制语句
Dec 04 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
Python程序控制语句用法实例分析
Jan 14 Python
Django接收照片储存文件的实例代码
Mar 07 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
Python 中 Shutil 模块详情
Nov 11 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
javascript globalStorage类代码
2009/06/04 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
python 移除字符串尾部的数字方法
2018/07/17 Python
tensorflow如何批量读取图片
2019/08/29 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
python模块如何查看
2020/06/16 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
校园广播稿范文
2015/08/19 职场文书
Python机器学习之基础概述
2021/05/19 Python
java泛型通配符详解
2021/07/25 Java/Android
图文详解nginx日志切割的实现
2022/01/18 Servers
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL