假如我有500台机器,跑着500个进程,假如有一部分台机器挂了,我们怎么能及时的知道呢?我们维护自己的机器当然要及时的直到啦
so 如果我们有一个监控的软件来实时的监控是不是就可以解决这个问题啦
其原理是:client端每隔一个时间段(比如60秒)汇报给server端 没有在正确的时间收到某台机器的汇报就说明这台机器出问题了,应该去看一看。
那么如何做呢?在client端的主进程中开启一个子进程,通过这个子进程来汇报,看下面:
from multiprocessing import Process
import time
def eye():
while True:
print('server大哥,我很好,请放心')
time.sleep(1)
def main():
print('主程序代码')
time.sleep(3)
if __name__ == '__main__':
p = Process(target=eye)
p.daemon = True # 把p设置成守护进程(主进程代码结束,守护进程会随之结束)
p.start()
main()
守护进程只守护主进程的代码而已,如果有多个子进程在执行,那么主进程肯定要等到所有子进程结束收完尸体才能结束,
守护进程只守护主进程的代码其他的不会管。
那么,那么,那么如果我想一并把其他的子进程也守护了呢?怎么做?
可以考虑使用join啊,通过将p2.join加到主进程代码中,那么守护进程就要等这一句执行完才结束(这一句属于主进程的代码啊),所以变相的就把这个子进程也守护了。
总结一下:
关键字daemon,关键字daemon,关键字daemon
1守护进程会随着主进程代码的结束而结束
2守护进程不会守护除了主进程代码外的其他子进程(除非你人为的使用join去让他去守护子进程)