python os.fork() 循环输出方法
先看下面这段代码:
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中用fork()函数生成的子进程
python的os module中有fork()函数用于生成子进程,生成的子进程是父进程的镜像,但是它们有各自的地址空间,子进程复制一份父进程内存给自己,两个进程之 间的执行是相互独立的,其执行顺序可以是不确定的.随机的.不可预测的,这点与多线程的执行顺序相似. import os def child(): print 'A new child:', os.getpid() print 'Parent id is:', os.getppid() os._exit(0) def parent():
-
在Python中os.fork()产生子进程的例子
例1 import os print 'Process (%s) start...' %os.getpid() pid = os.fork() if pid==0: print 'I am child (%s) and my father is %s.'%(os.getpid(),os.getppid()) else: print 'I (%s) just created a child process (%s).' %(os.getpid(),pid) 加载os模块后,首先os.fork()函
-
python使用fork实现守护进程的方法
os模块中的fork方法可以创建一个子进程.相当于克隆了父进程 os.fork() 子进程运行时,os.fork方法会返回0: 而父进程运行时,os.fork方法会返回子进程的PID号. 所以可以使用PID来区分两个进程: #!/usr/bin/env python #coding=utf8 from time import sleep import os try: pid = os.fork() except OSError, e: pass sleep(30) 运行代码,查看进程: [roo
-
对python中的os.getpid()和os.fork()函数详解
如下所示: import os import sys import time processNmae = 'parent' print "Program executing ntpid:%d,processNmae:%s"%(os.gitpid(),processNmae) #attempt to fork child process try: forkPid = os.fork() except OSError: sys.exit("Unable to create new
-
python os.fork() 循环输出方法
先看下面这段代码: 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.g
-
python中for循环输出列表索引与对应的值方法
如下所示: list = ['a','b','c'] 想用for循环输出list的元素以及对应的索引. 代码及结果如下: 以上这篇python中for循环输出列表索引与对应的值方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
Python 忽略warning的输出方法
有时候运行代码时会有很多warning输出,如提醒新版本之类的,如果不想这些乱糟糟的输出可以这样: import warnings warnings.filterwarnings('ignore') 命令行下则可以: python -W ignore file.py 这样就可以避免warnings的输出了,但是切记,不要盲目设置取消输出. 以上这篇Python 忽略warning的输出方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
python 使用while循环输出*组成的菱形实例
一,python输出*组成的菱形(实心): python代码: x = int(input('请输入最长行的*的个数:')) y = int(input('请输入每个*之间的间隔:')) i = 1 while i<= x: #第一个while组成菱形上半部 j = 1 k = 1 while k <= x-i: print(' '*y,end = '') #每一行最左边到第一个*之间的空格 k += 1 while j <= i: print('*', end=' '*(2*y-1))
-
python中的格式化输出方法
目录 1使用字符串模运算符(%)格式化输出 2使用format方法格式化输出 3使用String方法格式化输出 前言: 有几种方法可以显示程序的输出. 数据可以以人类可读的形式打印,或写入文件以供将来使用,甚至可以以某种其他指定的形式. 用户通常希望对输出格式进行更多控制,而不是简单地打印以空格分隔的值. 有几种方法可以格式化输出. 要使用格式化字符串文字,请在左引号或三引号之前以 f 或 F 开始字符串. 字符串的format() 方法可帮助用户创建更精美的输出. 用户可以通过使用字符串切片
-
python os.path模块使用方法介绍
os.path模块是os模块根据系统类型从另一个模块导入的,并非由os模块实现 1.os.path.abspath(相对路径)-----返回对应路径的绝对路径 os.path.abspath(".") import os.path print(os.path.abspath(".")) E:\python练习 上一层路径“..” import os.path print(os.path.abspath("..")) E:\ 2.os.path.a
-
Python跳出多重循环的方法示例
方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 class Getoutofloop(Exception): pass try: for i in range(5): for j in range(5): if i == j == 2: raise Getoutofloop() else: print i, '----', j except Getoutoflo
-
Python实现动态循环输出文字功能
在一些公共场所经常可以看到一些动态提示的文字,以下代码即为文字的循环变化代码: import sys import time def print_act(word): print('新春佳节快乐'+'\r') #让光标回到行首 sys.stdout.write("\r") #缓冲区的数据全部输出 sys.stdout.flush() #遍历整个单词 for item in word: #写到缓冲区 sys.stdout.write(item) #输出 sys.stdout.flush(
-
python中退出多层循环的方法
1.定义标记变量:利用变量值的变化退出循环 # 第一种嵌套形式 a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]] # init_i = 0 # init_j = 0 flag = True for i in range(3): for j in range(3): # print(i, j) if a[i][j] == 5: flag = False init_i = i init_j = j break if not flag: break print(init_i,
-
python倒序for循环实例
目录 python倒序for循环 python笔记for循环倒序 方法一 方法二 python倒序for循环 直接上代码: #从10到0进行遍历循环,括号里最后一个-1是步长,实现倒序:前两个参数是起始和终止值,也是前闭后开. for i in range(10,-1,-1): print(i) 输出: 109876543210 python笔记for循环倒序 方法一 # 从10递减循环到-1,注意不包括-1,第三个参数是步长(左闭右开) for i in range(10,-1,-1
随机推荐
- 详解AngularJs ui-router 路由的简单介绍
- 浅谈Spring bean 生命周期验证
- JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
- 正则表达式学习问答
- spring boot(一)之入门篇
- Js从头学起(基本数据类型和引用类型的参数传递详细分析)
- asp.net显示相同数字相乘的结果,直到数值大于150为止
- jQuery插件实现静态HTML验证码校验
- php at(@)符号的用法简介
- PHP开发微信支付的代码分享
- js无法获取到html标签的属性的解决方法
- JS使用post提交的两种方式
- python编码总结(编码类型、格式、转码)
- jQuery获取注册信息并提示实现代码
- 用javascrpt将指定网页保存为Excel的代码
- 史上MD5解密之最快方法整理(荐)
- java抓包后对pcap文件解析示例
- Java和PHP在Web开发方面对比分析
- JS实现多物体运动的方法详解
- Python实现简单文本字符串处理的方法