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脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
Python中datetime模块参考手册
Jan 13 Python
Python3 socket同步通信简单示例
Jun 07 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
python实现二分类的卡方分箱示例
Nov 22 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
19个Android常用工具类汇总
2014/12/30 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
Python读写Excel表格的方法
2021/03/02 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
校园达人秀策划书
2014/01/12 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
2015年见习期工作总结
2014/12/12 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
电影建党伟业观后感
2015/06/01 职场文书
工商行政处罚决定书
2015/06/24 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技