Python 进程三种创建方式

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

   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)


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

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

    创建子类,继承父类(Process),重写Run方法,实例化子类对象时,通过对象start开启子进程,子进程所执行的内容,就是在重写的run方法中的内容。在.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创建的方式。


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值