1 ,并行,并发 :

  1. 单核 cpu 的时期 :
    早期,单核 cpu 的时期,没有并行的概念,只有并发
  2. 并行 : 多个形成独立工作
  3. 并发 : 微观上串行,宏观上并行

2 ,进程三种状态 :

  1. ready ( 就绪状态 ) : 获得了除 cpu 外的所有资源,只要货 cpu 时间片段,就可以立刻执行
  2. running ( 执行状态 ): 程序正在处理机上运行
  3. blocked ( 阻塞状态 ): 因为某些事件的发生,程序放弃了处理机,法务执行程序

3 ,同步,异步 :

  1. 同步 : 两个任务在同一条时间线上
  2. 异步 : 两个任务不再同一条时间线上

4 ,阻塞,非阻塞 :

是都卡住

5 ,进程号 : pid

os.getpid()

6 ,父子进程 : 谁调用了谁

# Author:SFL
from multiprocessing import Process
import os

def aa(n):
    print("子进程 pid:%s"%(os.getpid()))

if __name__ == '__main__':
    p = Process(target=aa,args=(1,))
    p.start()
    print("main进程 pid:%s"%(os.getpid()))

7 ,父进程表编号 :

os.getppid()

8 ,run ,start 区别 :

  1. start : 启动一个子进程
  2. run :普通函数。
  3. 因此,如果你想启动多进程,就必须使用start()方法。

9 ,进程名字 :

  1. 获取 :
p.name
  1. 设置 :
p = Process(target=aa,args=(1,),name="aa")

10 ,内置函数开进程 :

  1. 精华代码 :
p1 = Process(target=aa,args=("来将何人",))
p1.run()
  1. 全部代码 :
# Author:SFL
from multiprocessing import Process

def aa(s:str):
    for i in range(1000):
        print(s)

if __name__ == '__main__':
    p1 = Process(target=aa,args=("来将何人",))
    p2 = Process(target=aa,args=("你爹",))
    p1.run()
    p2.run()

11 ,继承方式开进程 :

# Author:SFL
from multiprocessing import Process

class MyProcess(Process):
    def __init__(self,v):
        super(MyProcess, self).__init__()
        self.v=v
    def run(self):
        for i in range(1000):
            print(self.v)

if __name__ == '__main__':
    p1 = MyProcess("对面谁上单")
    p2 = MyProcess("你爹")
    p1.start()
    p2.start()

12 ,join ,子进程优先 :

  1. 理论 :
    让主进程等待自己进程执行,子进程结束后,主进程猜中还行
  2. 精华代码 : p1 就是那个子进程
p1.join()
  1. 完整代码 :
if __name__ == '__main__':
    p1 = MyProcess("对面谁上单")
    p1.start()
    p1.join()
    for i in range(1000):
        print("你爹")
  1. 应用场景 :
    后面的进程需要前面的结果

13 ,进程是否活着 :

  1. 精华代码 :
p1.is_alive()
  1. 看到他活着 :
if __name__ == '__main__':
    p1 = MyProcess("对面谁上单")
    p2 = MyProcess("你爹")
    p1.start()
    p2.start()
    print(p1.is_alive())
    print(p2.is_alive())
  1. 看到他死了 :
if __name__ == '__main__':
    p1 = MyProcess("对面谁上单")
    p2 = MyProcess("你爹")
    p1.start()
    p2.start()
    time.sleep(1)
    print(p1.is_alive())
    print(p2.is_alive())

14 ,杀掉进程 :

p1.terminate()

15 ,守护进程 :理论

  1. 独立 : 进程之间是互相独立的,主进程代码运行结束,守护进程随即终止。
  2. 创建 : 有主进程创建
  3. 运行 : 在后台运行
  4. 结束 : 守护进程会在主进程代码执行结束后就终止,否则抛出异常
  5. 绝育 : 守护进程内无法再开启子进程
  6. 子进程资格 : 只有子进程才可以成为守护进程

16 ,父子进程 : 子进程

  1. 理论 : 在进程中,开启的进程
  2. 代码 :
# Author:SFL
from multiprocessing import Process
from multiprocessing import process
import time
import os

def aa(s):
    print("aa我的进程编号是:%s"%(os.getpid()))
    print("aa我的爸爸编号是:%s"%(os.getppid()))

if __name__ == '__main__':
    p = Process(target=aa,args=(1,))
    p.start()
    print("main我的进程编号是:%s"%(os.getpid()))
    print("main我的爸爸编号是:%s"%(os.getppid()))

17 ,守护进程 : 代码

  1. 设置为守护进程 :
p.daemon(True)
  1. 是否为守护进程 :
p.daemon
  1. 完整代码 : 只看到 True ,因为守护进程在后台运行
# Author:SFL
from multiprocessing import Process
from multiprocessing import process
import time
import os

def aa(s):
    for i in range(1000):
        print("aa")

if __name__ == '__main__':
    p = Process(target=aa,args=(1,))
    p.daemon = True
    p.start()
    print(p.is_alive())