三十五、进程1:fork创建子进程(不常用)、Process创建子进程(常用)

一、fork创建子进程(不能跨平台,只在Linux下执行,windows下不执行)

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

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

1、主进程从一开始导入import os 开始执行,子进程从os.fork()创建出开始进行,会分开各自执行各自的代码,互不干扰。

2、如果主进程先退出了,说明进程已经退出了,不会因为子进程没有结束,主进程去等待。

3、主进程返回的值是大于0的,子进程的返回值是等于0的。

示例:主进程从头开始执行,子进程从fork创建出来开始执行,分开代码执行,互不干扰,

           都执行完后,主进程、父进程都该执行print(“----over-----”)了,所以执行两遍

4、getpid、getppid

getpid返回当前进程标识  ,   getppid返回父进程标识

注意:

        1、主进程>0,  主进程没有父类所以用getpid查看

        2、子进程可有父类,本身用getpid,父类用getppid

        3、父进程中fork的返回值,就是刚刚创建出来的子进程的id

5、全局变量在多个进程中不共享

多进程中,每个进程中所有数据(包括全局变量)都各有拥有一份,互不影响。

进程可以完成多任务,但是,进程与进程之间是独立的,进程和进程之间想要实现通信,需要网络。

二、Process创建子进程(可跨平台使用,常用)

1、p=Process(target=test)   #创建出子进程,去执行 test 函数内容

      p.start()   #开启子进程,执行函数内容,主进程继续向下执行,子进程去执行函数内容,执行完消失

2、在创建子进程的时候并传递参数

3、使用process时主进程执行完后会等待子进程结束以后,程序才会最终结束,而使用fork的时候,主进程结束就结束了,

      它不会等待子进程结束才结束的。

4、join()方法执行到这时,主进程等待子进程结束后再继续往下运行,通常用于进程间的同步。

      join(参数time):等待子进程多少秒,主进程才继续向下执行;

5、实例:

6、通过类创建子进程

       

 

 

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/81569458
今日推荐