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练习程序批量修改文件名
Jan 16 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
使用python实现BLAST
Feb 12 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
python语言中有算法吗
Jun 16 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
Python Socket编程详解
Apr 25 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断点续传之如何分割合并文件
2014/03/22 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
Python入门篇之字典
2014/10/17 Python
Python发送email的3种方法
2015/04/28 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
详解Python发送email的三种方式
2018/10/18 Python
python版飞机大战代码分享
2018/11/20 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
澳大利亚百货公司:David Jones
2018/02/08 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
2015年上半年党建工作总结
2015/03/30 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书