美文网首页
Python fork创建进程

Python fork创建进程

作者: 又绿江南岸1990 | 来源:发表于2019-08-12 09:29 被阅读0次

1、进程

进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。进程是系统进行资源分配和调度的一个独立单位。进程是由代码(堆栈段)、数据(数据段)、内核状态和一组寄存器组成。 在多任务操作系统中,通过运行多个进程来并发地执行多个任务。由于每个线程都是一个能独立执行自身指令的不同控制流,因此一个包含多个线程的进程也能够实现进程内多任务的并发执行。进程是一个内核级的实体,进程结构的所有成分都在内核空间中,一个用户程序不能直接访问这些数据。

进程的状态:创建、准备、运行、阻塞、结束。

2、创建进程

Linux 和 Unix 操作系统提供了一个fork()函数创建新的进程,这也就意为这该函数仅适用于Linux和Unix平台,Windows操作系统没有fork()函数。

fork()函数比较特殊,python的os.fork()是唯一调用一次返回两次的函数,因操作系统将当前的进程(父进程)复制了一份新的进程(子进程),然后分别在父进程和子进程内返回。

例:利用fork()函数创建子进程

利用fork()函数创建子进程

os.fork()创建子进程后,ret会返回两个值。

例:查看ret的值

ret的值如果大于0,代表当前进程是主进程,如果ret的值等于0,代表当前进程是子进程。

例:调整进程执行顺序

此时,父进程运行结束后,显示终端待输入命令,但是子进程没有运行结束,当子进程运行结束之后,就会打印子进程中的语句。

例:后面如果有语句,是否会执行

if之后的语句不论是主进程还是子进程都会正常执行,主进程与子进程都会执行程序中的所有代码。

3、查看主进程与子进程的进程号

例:查看主进程与子进程的进程号

查看主进程与子进程进程号

os.getpid()函数会返回当前进程的进程号,os.getppid()函数会返回当前进程的父进程的进程号。

当os.fork()函数的返回值大于0时,此时的值会当做当前进程的子进程的ID号,如果Python解释器判断当前进程被占用,会依次向下寻找能够使用的ID号返回,所以子进程的进程号与父进程的ret返回值相同。子进程中的父进程号与主进程的进程号相同。

4、全局变量在父子进程中不共享

如果定义了全局变量,那么在父子进程中,该全局变量是独立的,不会互相影响。

例:全局变量在父子进程中不共享

全局变量父子进程中不共享

5、多个fork

例:多个fork

多个fork

使用fork()函数创建进程会占用大量的内存空间,容易造成fork()炸弹,同时父子进程之间是不会相互影响的,父进程或子进程结束时,另一个进程会正常运行,直到程序结束。

相关文章

  • Python多进程

    Python多进程 Python中进程创建方式有两种: fork:使用Python提供的os模块。 Python在...

  • 多进程笔记:

    ### 在Python中多进程的创建方式对比: 1. 在Python中,可以通过`os.fork()`创建子进程,...

  • Python fork创建进程

    1、进程 进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。进程是系统进行资源分配和...

  • 多进程

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

  • 1.5.1 Python进程使用 -- fork

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

  • Linux内核简述

    进程 创建 创建进程用fork()函数。fork()为子进程创建新的地址空间并且拷贝页表。子进程的虚拟地址空间...

  • 05-学会几个系统调用:咱们公司能接哪些类型的项目?

    立项服务与进程管理 创建进程的系统调用叫作 fork。在 Linux 里,当父进程调用 fork 创建进程的时候,...

  • Python中进程的理解:

    Num01-->进程的创建-fork Python的os模块封装了常见的系统调用,其中就包括fork,可以在Pyt...

  • 四、进程操作

    创建、结束进程创建进程使用fork系统调用,结束进程使用exit。理解fork调用的意义,理解vfork调用的意义...

  • 认识进程和线程

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

网友评论

      本文标题:Python fork创建进程

      本文链接:https://www.haomeiwen.com/subject/udqyjctx.html