参考:多进程- 廖雪峰的官方网站

首先,在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()理解相关推荐

  1. python中os.fork()理解

    import ospid = os.fork()if 0 > pid:print('调用出错') elif 0 == pid:print('我是子进程%s我的父进程是%s' % (os.getp ...

  2. python 类中定义列表_Python-从类定义中的列表理解访问类变量

    小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...

  3. 谈谈对python的理解_浅谈对python pandas中 inplace 参数的理解

    这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有, ...

  4. pandas中inplace_对python pandas中 inplace 参数的理解

    pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改 inplace = True:不创建新的对象,直接对原始对象进行修改: ​inplace = Fals ...

  5. python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...

    python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...

  6. 站长在线Python精讲:在Python函数中理解形式参数和实际参数

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中理解形式参数和实际参数>.本文的主要内容有:Python中形式参数的概念和特点,Python中实际参数的 ...

  7. Python多进程中的fork

    前言:当我们要实现Python多进程时,可以使用os模块中的fork()函数和multiprocessing模块,那么它们之间的用法和区别呢?下来,我们着重进行讲解: 友情链接: Python多进程中 ...

  8. python return函数_理解Python函数中的return关键字

    一.说明 return 语句是Python函数返回的结果,可以是数值.字符串.列表.表达式.函数等: return 语句将Python函数的结果,返回到调用的地方,并把程序的控制权一起返回,即在函数中 ...

  9. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

最新文章

  1. 梯度优化算法Adam
  2. VSCode + Latex 配置
  3. 单链表中删除指定值的节点
  4. inur new.php id,Cmsez(随易)全站系统注入0day
  5. UNICODE十六进制数组转成中英文
  6. 前端技术基础(一):浏览器相关
  7. String和ByteBuffer互转
  8. Sean Baxter 开发的GPU排序函数库
  9. Linux常用命令和Vi编辑器操作
  10. Excel自定义格式详解
  11. 转载:手机银行技术讨论3
  12. 华为网络配置(DHCP)
  13. 特步软件测试员工资,特步集团全面预算管理系统——管理员手册V1.1
  14. redisson 主从模式Unsupported protocol version 50_强推七本欢喜冤家甜文,男女主从互怼到互宠,超甜超撩超过瘾!...
  15. 作业4使用vi编辑器配置网络环境
  16. 斗鱼直播Android开发二面被刷,真香!
  17. Autoware1.14-摄像头目标检测YOLO-V3
  18. 接入Google fit指南
  19. nodejs探秘:require加载模块的原理及代码实现
  20. sql语句like的用法

热门文章

  1. 几种开源java绘图组件介绍
  2. 实现iPhone电子书的分页显示功能(附代码)
  3. Source Insight4 常用设置
  4. Linux之四剑客之awk
  5. 车间数字孪生解决方案(三)
  6. 安装kismet2022最新版本步骤以及报错--没装成功,大家不要看啦,应该是缺少了依赖的问题,这里仅作个人记录!!!需要安装的可以参考内页官网
  7. Ubuntu重装笔记
  8. crm源码客户管理系统客户管理源码
  9. 人机交互在计算机科学中的作用,人机交互技术
  10. Swift中的JSON数据解析