首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中守护进程与守护进程的比较

在Python中守护进程与守护进程的比较
EN

Stack Overflow用户
提问于 2019-07-26 15:17:46
回答 1查看 1.1K关注 0票数 1

基于Python文档,守护进程线程是主线程死后死亡的线程。这似乎是守护进程的完全相反的行为,它涉及创建子进程和终止父进程,以便init接管子进程(也就是杀死父进程不会杀死子进程)。

那么,为什么守护进程线程在父进程死亡时会死掉,这是一个错误的名称吗?我认为“守护进程”线程将在主进程终止后继续运行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-27 09:50:30

只是名字在不同的背景下意味着不同的东西。

如果您不知道,如threading.Thread,也可以将multiprocessing.Process标记为“守护进程”。您对“守护进程”的描述适合Unix-守护进程,而不是Python的守护进程。

文档中还有一个关于Process.daemon的部分。

..。请注意,不允许守护进程创建子进程。否则,如果守护进程在父进程退出时被终止,则守护进程将使其子进程成为孤儿。此外,这些不是Unix守护进程或服务,它们是正常进程,如果非守护进程已经退出,它们将被终止(而不是加入)。

Python的守护进程和Unix-守护进程(或Windows“服务”)之间唯一的共同点是,您可以将它们用于后台任务(对于Python:对于那些在关机时不需要进行适当清理的任务)。

Python将自己的抽象层强加于OS-线程和进程之上。用于ThreadProcess的守护进程属性是关于这个Python级别的抽象的。

在Python级别,守护进程线程是主线程退出时不被加入(等待自愿退出)的线程,守护进程是在父进程退出时终止(而不是加入)的进程。守护进程和进程都有相同的行为,因为在主进程或父进程关闭的情况下,不会等待它们的自然退出。就这样。

请注意,Windows甚至没有像Unix这样的“相关进程”的概念,但是Python以跨平台的方式实现了“子”和“父”的关系。

我认为“守护进程”线程将在主进程终止后继续运行。

线程不能存在于进程之外。进程总是托管至少一个线程并为其提供上下文。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57222905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档