进程,首先理解进程的概念,假如我们的电脑内存大小是一定的,要开启多个软件,内存的占用就会越来越大,计算机有自己的处理方式。例如时间片轮转,优先级调度等。如果内存当前被占用大部分的空间,开启的软件过多,其他软件也要得到计算机的内存空间,这时候内存就会轮番调度。这个时间间隔是非常短暂的给人的感觉就是多个软件在一起执行。

   Python中创建多进程。Python的OS模块封装了常见的系统调用,多进程的调用就是fork,可以使用python创建多进程。

一、fork创建

import os

ret = os.fork() # 返回值等于0时,子进程
print(ret)
if ret>0:
    print("---父进程--%d-"%os.getpid())
else:
    print("---子进程---%d-%d-"%(os.getpid(),os.getppid()))

 注意,在win系统中,没有fork这个系统调用,那么如何在win系统中开启多进程呢?

二、Multiprocessing  模块 Process类

  第二种创建进程的方式,是通过Multiprocessing模块中的Process类,创建Process对象,通过对象参数target=“需要执行的子进程”

from multiprocessing import Process
import time

def test():
    while True:
        print("---test---")
        time.sleep(1)

p = Process(target=test) # target参数需要执行的子进程
p.start() #让这个进程开始执行test函数里的代码

while True:
    print("---main---")
    time.sleep(1)

python 新进程 python的进程_win系统

注:与fork的不同点;fork不是跨平台的,在win系统中不能使用,而在win系统中使用Process对象来调用子进程需要执行的方法。通过start开启子进程;在fork中,主进程不会等待子进程的结束,而结束主进程,在Process开启的子进程中,会等待所有的子进程结束后,才会结束主进程。

三、通过继承Process类,创建子进程

在.start()方法时,会自动调用run方法。

from multiprocessing import Process
import time

class MyNewProcess(Process):
    def run(self): # 重写run方法
        while True:
            print("---1----")
            time.sleep(1)


p = MyNewProcess()
p.start() # 开启进程

while True:
    print("---main----")
    time.sleep(1)

继承父类的这种方式,底层的实现其实就是Process创建的方式。