Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
541 views
in Technique[技术] by (71.8m points)

python中的守护进程和linux中的守护进程有什么区别呢?

百度查到的是:
在python中说进程以守护进程的形式启动,那么在主进程结束时,守护进程就会被强制结束
在linux中用程序用守护进程的形式启动,那么程序就会在后台运行。linux中的守护进程一般会从开机运行到关机。

有几个问题想不通

  1. python中守护进程是做什么的呢?
  2. python中的守护进程与linux中说的有没有区别?
  3. 他们守护的是什么?

python 守护进程示例:

from multiprocessing import Process
import time


def task():
    print('进程被创建')
    time.sleep(3)
    print('进程结束')


if __name__ == '__main__':
    p = Process(target=task,)
    # 在进程启动前,设置为守护进程
    p.daemon = True  
    p.start()
    print('主进程结束')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
  1. python 中你代码中的设置守护进程,只是为了让程序可以在终端关闭之后继续运行
  2. 本质上没有区别,linux中说一般是从开机运行到关机,是因为,linux的守护进程的业务生命周期就是从开机到关机,如果你上面的python代码中,用一个死循环把 sleep 包围起来,那么你的这个进程也会从脚本启动运行到服务器关机,你主进程主动结束了,守护程序就终止了。linux中守护进程如果出现异常或者主动终止,他也会终止,只是绝大部分的守护任务都是类似 死循环+sleep 这种逻辑进行,甚至是 死循环+sleep+子进程任务 的方式进行,来保证在linux的运行周期内不要退出。 现在的linux 中1号进程是systemd, 然后其他的守护进程都是由systemd来启动,维护,异常后重启等等的。 python写的 supervisord 和他有点像.
  3. 不要纠结这个守护,这只是翻译过来的文字,他其实就是让你的程序运行在终端之外,不会因为你关闭了终端,就自动死掉。他守护你的进程,不要因为终端关闭而终止 只要达到这个目的,而你的进程中有没有异常或者主动退出,你的进程就只能运行到系统关机。

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...