python - 在完成 main 方法之前终止所有进程
问题描述
我为一些日志记录任务运行了一个单独的进程,与我的主进程并行。他们共享一些资源,我遇到了在主进程完成之前终止日志记录进程的问题。
完成主要 Python 程序并保留子进程有什么缺点吗?我可以确定它会在退出主程序时终止吗?Process.terminate()
或者在主脚本中作为我最后一次调用会更好吗?
解决方案
只要您正在启动的进程是daemons
,主进程将在退出之前自动终止它们:
daemon
进程的守护进程标志,一个布尔值。这必须在调用 start() 之前设置。
初始值是从创建过程中继承的。
当一个进程退出时,它会尝试终止其所有的守护子进程。
请注意,不允许守护进程创建子进程。否则,如果守护进程在其父进程退出时被终止,它将使其子进程成为孤儿。此外,这些不是 Unix 守护进程或服务,它们是正常进程,如果非守护进程退出,它们将被终止(而不是加入)。
该标志是为由 a 创建的进程自动设置的multiprocessing.Pool
,但默认false
为Process
对象。父进程将尝试调用join
所有非守护进程的子进程,因此如果您有任何正在运行的子进程,它们将阻止父进程退出,直到它们自己退出。
推荐阅读
- python-3.x - `for .. in KafkaConsumer`:如何在`eof`中生存?
- amazon-s3 - 将镶木地板文件加载到 AWS Redshift/Redshift Spectrum 但不是 AWS Athena 的版本问题
- python - 'b' 的正则表达式前面没有奇数个 'a'
- python - Twitter Scraping - 最近在使用 Python 的抓取过程中再次尝试错误
- python - kivy 将视频放在画布中?
- mysql - Mysql中每个单词的首字母大写
- android - Android 复杂动画在视图大小更改时跳过帧
- c++ - 如何在 libgit2 中硬重置为以前的提交?
- ios - XCUITest 正在匹配来自另一个父级的后代元素,而不是我正在查看的那个
- html - svg 没有显示/奇怪的缩放