python 如何设置守护进程


Posted in Python onOctober 29, 2020

上一篇文章 介绍 join 在多进程中的作用,本文继续学习设置守护进程的对程序的影响。(Python大牛可以绕行)

我们通过两个例子说明

# encoding: utf-8
"""
author: yangyi@youzan.com
time: 2019/7/30 11:20 AM
func:
"""
from multiprocessing import Process
import os
import time

def now():
  return str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

def func_1(name):
  print(now() + ' Run child process %s ,pid is %s...' % (name, os.getpid()))
  time.sleep(2)
  print(now() + ' Stop child process %s ,pid is %s...' % (name, os.getpid()))


def func_2(name):
  print(now() + ' Run child process %s , pid is %s...' % (name, os.getpid()))
  time.sleep(4)
  print(now() + ' hello world!')
  print(now() + ' Stop child process %s , pid is %s...' % (name, os.getpid()))


if __name__ == '__main__':
  print ('Parent process %s.' % os.getpid())
  p1 = Process(target=func_1, args=('func_1',))
  p2 = Process(target=func_2, args=('func_2',))
  print now() + ' Process start.'
  p1.daemon = True #设置子进程p1为守护线程
  p1.start()
  p2.start()
  print now() + ' Process end .'

结果显示

python 如何设置守护进程

启动了子进程 Run child process func_1 但是没有 func_1 的结束提示。随着主进程的结束而结束。

if __name__ == '__main__':
  print ('Parent process %s.' % os.getpid())
  p1 = Process(target=func_1, args=('func_1',))
  p2 = Process(target=func_2, args=('func_2',))
  print now() + ' Process start.'
  p2.daemon = True #设置子进程p2为守护线程
  p1.start()
  p2.start()
  print now() + ' Process end .'

结果显示

python 如何设置守护进程

启动了子进程func_1,而func_2 没有启动便随着主进程的结束而结束。

总结

对于进程或者子线程设置join() 意味着在子进程或者子线程结束运行之前,当前程序必须等待。当我们在程序中运行一个主进程(主线程),然后有创建多个子线程。主线程和子线程各自执行。当主线程想要退出程序时会检查子线程是否结束。如果我们设置deamon属性为True ,不管子线程是否结束,都会和主线程一起结束。

-The End-

以上就是python 如何设置守护进程的详细内容,更多关于python 守护进程的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python之re操作方法(详解)
Jun 14 Python
python脚本替换指定行实现步骤
Jul 11 Python
TensorFlow实现Batch Normalization
Mar 08 Python
pandas的object对象转时间对象的方法
Apr 11 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python工厂函数用法实例分析
May 14 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
Python按钮的响应事件详解
Mar 04 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python cookie反爬处理的实现
Nov 01 Python
python 多线程中join()的作用
Oct 29 #Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 #Python
python 实现音频叠加的示例
Oct 29 #Python
详解python的super()的作用和原理
Oct 29 #Python
Python生成pdf目录书签的实例方法
Oct 29 #Python
利用python清除移动硬盘中的临时文件
Oct 28 #Python
python实现一个简单RPC框架的示例
Oct 28 #Python
You might like
Phpbean路由转发的php代码
2008/01/10 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
js实现盒子拖拽动画效果
2020/08/09 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
python中定义结构体的方法
2013/03/04 Python
Python素数检测的方法
2015/05/11 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
财务副总经理工作职责
2013/11/25 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle