multiprocessing模块和创建进程

操作系统简单介绍

  多道技术:(重点)

    空间复用

    时间复用

    进程之间是空间隔离的

  分时系统

  实时系统

  通用操作系统

  提交任务的方式:同步异步   任务的执行状态:阻塞非阻塞

  异步:任务的提交方式,多个任务提交出去,同时执行 

扫描二维码关注公众号,回复: 4832083 查看本文章

    同步阻塞

    异步阻塞:

    异步非阻塞:

    同步非阻塞:

  并发:伪并行,看着像同时运行,其实是任务之间的切换(遇到io切换的会提高代码效率) ,任务切换+保存状态(保存现场)

  并行:真正的同时在运行,应用的是多核技术(多个cpu)

  from multiprocessing import Process

    进程三状态:就绪(等待操作系统调度去cpu里面执行)  执行  阻塞   

    Join方法:主进程等待子进程执行结束再继续执行

    For 循环开启进程

  进程的两种创建方式

    第一种创建进程的方式

import time
from multiprocessing import Process

def func1():
    time.sleep(1)
    print("11111")

def func2(x):
    time.sleep(1)
    print("22222")
    print(x)

def func3(i):
    print(i)

if __name__ == '__main__':
    p1 = Process(target=func1,)
    p2 = Process(target=func2,kwargs={'x':'55开'})
    p1.start()
    print("join先让p1创建的进程结束之后,再继续执行")
    p1.join()
    
    p2.start()

    for i in range(20):
        p = Process(target=func3,args=(i,))
        p.start()

 

    第二种创建进程的方式

from multiprocessing import Process   #引入multiprocessing模块的Process类

class Foo(Process):              #创建一个类,继承Process类
    def __init__(self,n,m):      #为了传自己创建的类的参数(n,m)
        super().__init__()       #要先执行父类的__init__方法
        self.n = n
        self.m = m

    def run(self):               #创建进程一定要有这个方法.
        print(f"表面兄弟{self.n},和你不熟{self.m}")

if __name__ == '__main__':       #windows系统中,创建进程一定要有这一步,不然会一直递归创建进程
    f = Foo("卢本伟","UU妹")      #给自己创建的类创建一个对象
    f.start()                      #  创建进程,且执行自己类中的 (run方法)

  

猜你喜欢

转载自www.cnblogs.com/gyc-tzx/p/10240869.html