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 pickle模块用法实例
Apr 14 Python
python 重定向获取真实url的方法
May 11 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
Python 变量类型详解
Oct 10 Python
python ipset管理 增删白名单的方法
Jan 14 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
Python中有几个关键字
Jun 04 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 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正则表达式详解
2016/01/04 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
php实现的顺序线性表示例
2019/05/04 PHP
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
介绍一下SQL Server的全文索引
2013/08/15 面试题
军训考核自我鉴定
2014/02/13 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
毕业设计致谢词
2015/05/14 职场文书
教你用python实现12306余票查询
2021/06/30 Python