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显示天气预报
Mar 02 Python
Python下singleton模式的实现方法
Jul 16 Python
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
Python六大开源框架对比
Oct 19 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
利用Python破解斗地主残局详解
Jun 30 Python
python的变量与赋值详细分析
Nov 08 Python
5款非常棒的Python工具
Jan 05 Python
浅谈flask中的before_request与after_request
Jan 20 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
python关于变量名的基础知识点
Mar 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
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
动态控制Table的js代码
2007/03/07 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
Vue的Options用法说明
2020/08/14 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
python修改操作系统时间的方法
2015/05/18 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
django云端留言板实例详解
2019/07/22 Python
英国探险旅游专家:Explore
2018/12/20 全球购物
优秀员工自荐书范文
2013/12/08 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
决心书格式及范文
2019/06/24 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server