python fork_Python 中fork()理解
参考:多进程- 廖雪峰的官方网站
首先,在python中我们要实现多进程,有两个模块可以用:
1)os中的fork()函数
2)multiprocessing模块
那么这两个模块有什么区别呢?
在fork()是基于unix/linux内核的函数,在windows中无法使用,因此multiprocessing模块作为跨平台的存在。
fork()
作为例子,我们先把参考博客中的例子拿过来# multiprocessing.py
import os
print 'Process (%s) start...' % os.getpid()
pid = os.fork()
if pid==0:
print 'I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid())
else:
print 'I (%s) just created a child process (%s).' % (os.getpid(), pid)
os.fork()这个函数,对于父进程,返回的是子进程的pid,对于子进程,返回的是0. 而通过os.getpid()得到的是当前的pid,os.getppid()得到的是父进程的pid。
更进一步的分析:# multiprocessing.py
import os
print 'Process (%s) start...' % os.getpid()
fork_num = 0
while(fork_num < 3):
pid = os.fork()
fork_num += 1
if pid==0:
print 'I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid())
else:
print 'I (%s) just created a child process (%s).' % (os.getpid(), pid)
在运行之前,我们分析可以得到,经过三次循环,应该有8个进程
运行结果:Process (427) start...
I (427) just created a child process (428).
I (427) just created a child process (429).
I am child process (428) and my parent is 427.
I (427) just created a child process (430).
I (428) just created a child process (431).
I am child process (431) and my parent is 428.
I (428) just created a child process (432).
I (431) just created a child process (433).
I am child process (433) and my parent is 431.
I am child process (430) and my parent is 427.
I am child process (429) and my parent is 427.
I am child process (432) and my parent is 428.
I (429) just created a child process (434).
I am child process (434) and my parent is 429.
该函数在运行时,是将代码在子进程中复制了一份
python fork_Python 中fork()理解相关推荐
- python中os.fork()理解
import ospid = os.fork()if 0 > pid:print('调用出错') elif 0 == pid:print('我是子进程%s我的父进程是%s' % (os.getp ...
- python 类中定义列表_Python-从类定义中的列表理解访问类变量
小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...
- 谈谈对python的理解_浅谈对python pandas中 inplace 参数的理解
这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有, ...
- pandas中inplace_对python pandas中 inplace 参数的理解
pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改 inplace = True:不创建新的对象,直接对原始对象进行修改: inplace = Fals ...
- python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...
python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...
- 站长在线Python精讲:在Python函数中理解形式参数和实际参数
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中理解形式参数和实际参数>.本文的主要内容有:Python中形式参数的概念和特点,Python中实际参数的 ...
- Python多进程中的fork
前言:当我们要实现Python多进程时,可以使用os模块中的fork()函数和multiprocessing模块,那么它们之间的用法和区别呢?下来,我们着重进行讲解: 友情链接: Python多进程中 ...
- python return函数_理解Python函数中的return关键字
一.说明 return 语句是Python函数返回的结果,可以是数值.字符串.列表.表达式.函数等: return 语句将Python函数的结果,返回到调用的地方,并把程序的控制权一起返回,即在函数中 ...
- python 类中定义类_Python中的动态类定义
python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...
最新文章
- 梯度优化算法Adam
- VSCode + Latex 配置
- 单链表中删除指定值的节点
- inur new.php id,Cmsez(随易)全站系统注入0day
- UNICODE十六进制数组转成中英文
- 前端技术基础(一):浏览器相关
- String和ByteBuffer互转
- Sean Baxter 开发的GPU排序函数库
- Linux常用命令和Vi编辑器操作
- Excel自定义格式详解
- 转载:手机银行技术讨论3
- 华为网络配置(DHCP)
- 特步软件测试员工资,特步集团全面预算管理系统——管理员手册V1.1
- redisson 主从模式Unsupported protocol version 50_强推七本欢喜冤家甜文,男女主从互怼到互宠,超甜超撩超过瘾!...
- 作业4使用vi编辑器配置网络环境
- 斗鱼直播Android开发二面被刷,真香!
- Autoware1.14-摄像头目标检测YOLO-V3
- 接入Google fit指南
- nodejs探秘:require加载模块的原理及代码实现
- sql语句like的用法