一、守护进程:

借助 daemon=True,必须在被守护的进程开启之前写上 会让被守护的子进程随着主进程的结束而结束

start 开启进程

join 阻塞进

举例守护进程,异步阻塞

import time
from multiprocessing import Process
def func():   #设置要守护的函数
    print('~' * 10)
    time.sleep(15)  #让子进程执行时间是十五秒  ,对比主进程10秒之后,是否会打印 --》 '@'*20
    print('@'*20)   #打印标识;
def compire(): ##设置对比的函数
    while True:    #守护之后,会在主进程10秒之后也跟着结束
        time.sleep(1)
        print('过去1秒')

if __name__=='__main__':
    p=Process(target=func)
    p.daemon=True   #守护第一个子进程
    p.start()     #开启第一个子进程
    c=Process(target=compire)
    c.daemon=True  #守护第二个子进程
    c.start()   #开启第二个子进程
    for i in range(100):
        time.sleep(0.1)
        print('*'*i)    # 让主进程十秒后结束
总结:
"""
   守护进程,就是能够在主进程结束之后,子进程无论是循环还是有其他没有执行的内容,都不会执行了
    如果有两个子进程,只保护其中一个,则两另一个子进程不会守护影响,会继续执行
    进程守护要写在,start 之前
    被守护进程中不能再开启子进程
"""
二、进程中的其他方法:
pid查看进程ip
name查看进程名字
terminate  终结一个进程
is_alive() 查看一个进程是否活着,返回True  False
import os
import time
from multiprocessing import Process
def func(p):   #由于主进程已经关闭了子进程,所以子进程不会再执行了
    print('%s子进程ip'%os.getpid())   #子进程ip



if __name__ == '__main__':
    p = Process(target=func)
    p.start()
    print(p.name,p.pid)   #打印进程名字和id  Process-1 8220
    p.name = '进程名改啦'
    print(p.name)   #进程名会更改
    p.terminate()    #异步,主进程发出关闭子进程命令,交给操作系统执行,至于什么时候执行,主进程并不关心,如果操作系统不是立马执行了,下面打印子进程可能还活着。
    print(p.is_alive())      #True
    time.sleep(2)           #睡两秒,操作系统一定是已经执行完了终结命令,下面再判断进程是否活着,就是False
    print(p.is_alive())     #False
举例

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
  • 2021-10-22
  • 2021-10-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-09-29
  • 2021-12-15
  • 2021-10-03
相关资源
相似解决方案