进程的创建-fork

1. 进程 VS 程序

编写完毕的代码,在没有运行的时候,称之为程序

正在运行着的代码,就成为进程

进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的

2. fork( )

Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程:

  import os# 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以pid = os.fork()if pid == 0:print('哈哈1')else:print('哈哈2')

说明:

  • 程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程中
  • 然后父进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而父进程中是子进程的 id号

在Unix/Linux操作系统中,提供了一个fork()系统函数,它非常特殊。

普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。

子进程永远返回0,而父进程返回子进程的ID。

这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。

3. getpid()、getppid()

import osrpid = os.fork()
if rpid<0:print("fork调用失败。")
elif rpid == 0:print("我是子进程(%s),我的父进程是(%s)"%(os.getpid(),os.getppid()))x+=1
else:print("我是父进程(%s),我的子进程是(%s)"%(os.getpid(),rpid))print("父子进程都可以执行这里的代码")

运行结果:

我是父进程(19360),我的子进程是(19361)
父子进程都可以执行这里的代码
我是子进程(19361),我的父进程是(19360)
父子进程都可以执行这里的代码

进程的创建-fork(python版)相关推荐

  1. 进程的创建-fork

    1.fork是linux/unix中专有的用来创建进程的系统调用. 2.在linux/unix系统中,提供fork()系统函数,非常特殊.普通的系统调用,调用一次就返回一次,而fork()调用一次,会 ...

  2. linux 进程(二) --- 进程的创建及相关api

    一.进程的创建fork()函数 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回两次.两次返回的区别是子进程的返回值是0,而父进程的返回值则是 新子进程的进程 ...

  3. 实验二:进程的创建与可执行程序的加载

    学号:SA*****259 姓名:吕良  关键字:fork() exec() task_struct 进程地址空间 ELF文件格式 动态链接库 实验总结(应该说是回答实验问题,因为300-500字真的 ...

  4. 进程控制——创建,终止

    目录 1.进程的创建 fork函数初识 fork函数返回值 写时拷贝 fork常规用法 2.进程终止 进程退出场景 进程常见退出方法 进程退出返回值的意义: 1.进程的创建 fork函数初识 在lin ...

  5. Python进程学习笔记-进程创建fork

    1. 进程 VS 程序 编写完毕的代码,在没有运行的时候,称之为程序 正在运行着的代码,就成为进程 进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的. 2. fork( ) Pyth ...

  6. python 多进程 调用模块内函数_进程创建fork()和multiprocessing模块Process类

    一.进程VS程序 一个人穿上军装去打仗就是战士,战士需要武器.战场等资源.一个人去种田就是农民,农民需要土地.锄头等资源. 编写完毕的代码,安静的呆在磁盘上,称之为程序.代码要运行就得加载到内存,正在 ...

  7. 进程的创建-Process子类(python 版)

    进程的创建-Process子类 创建新的进程还能够使用类的方式,可以自定义一个类,继承Process类,每次实例化这个类的时候,就等同于实例化一个进程对象,请看下面的实例: from multipro ...

  8. 守护进程与后台进程(Python 创建守护进程)

    文章目录 一.守护进程与后台进程 1. 守护进程 1.1 代码实现 为什么要fork两次 umask权限掩码 进程组 会话组 2. 后台进程 3. 守护进程与后台进程区别 4. 使用场景总结 二.参考 ...

  9. python创建新进程_Python并发编程(进程的创建)

    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的. 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的 ...

最新文章

  1. AD5934阻抗变换模块实验电路板
  2. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串
  3. Java 条件编译 Conditional Compilation
  4. [CF1082G]Petya and Graph
  5. Taro+react开发(4)--tora官网2
  6. xss攻击中受影响的是服务器还是客户端,安全测试基础之 XSS
  7. Jquery Datatable 数据填充报错:requested unknown parameter ‘XXX‘ for row xx, column xx 解决方法
  8. 爱情二十四课,妥协50分
  9. Mac自带嗅探器和Wireshake抓包(三)
  10. 2022年全球与中国汽车MEMS加速度计市场现状及未来发展趋势
  11. DKMS:Dynamic Kernel Module Support
  12. 长方形面积公式的由来
  13. LTP上手之路(一)
  14. python 根据坐标点计算方位角函数
  15. 焱融科技与趋动科技携手解决一站式存算难
  16. Android UI性能优化 检测应用中的UI卡顿
  17. 你应该知道的10种软件工具
  18. 图片动漫化 - 面部 - AnimeGAN
  19. 几分钟计算机不操作就注销,win10系统长时间不操作就自动注销的方案
  20. Anki 2.1.24 版本更新要点

热门文章

  1. linux禁用root登录
  2. 用户控件(UserControl)
  3. Differential Geometry之第九章常平均曲率曲面
  4. RxJava Agera 从源码简要分析基本调用流程(2)
  5. C#中HTML和UBB互相转换的代码
  6. 【博客话题】爱上Linux的N+1个理由
  7. .net知识和学习方法系列(二十)CLR-委托
  8. 发布:偶写的NHibernate代码生成器
  9. TypeScript 安装与使用
  10. Oracle IMPDP导入数据案例之注意事项(undo/temp)