专栏首页idbaPython| 设置守护进程

Python| 设置守护进程

上一篇文章 介绍 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 .'

结果显示

启动了子进程 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 .'

结果显示

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

总结

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

-The End-

本文分享自微信公众号 - yangyidba(yangyidba),作者:yangyidba

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python| 多进程中join()的意义

    multiprocessing 是python提供的跨平台版本的多进程模块。multiprocessing可以充分利用多核,提升程序运行效率。multiproc...

    用户1278550
  • Python|实例方法,类方法,静态方法

    周五的时候修改了一点代码(确定不是bug),对Python 部分语法知识都生疏了,重新学习类中的方法。本章主要介绍python 类中的三种方法:实例方法,类方法...

    用户1278550
  • Python3与Python2的具体区别

    有赞的数据库管控平台是基于Python 2(py2)开发的,目前已经升级到python3(py3) 版本,主程序基于python 3.6.x。写本文是梳理一下 ...

    用户1278550
  • JS-缓冲运动:菜单栏型悬浮框

    xing.org1^
  • JS-缓冲运动-对联型悬浮框

    xing.org1^
  • 原生JS解决拖拽后刷新位置丢失问题

    在给页面中的元素时行拖拽时,如果拖拽到一半,页面刷新了,上一次拖拽的位置就会丢失,今天给大家分享一个小Demo,主要运用的localStorage来解决的这个问...

    越陌度阡
  • ESP8266 LUA脚本语言开发: 外设篇-定时器,延时,看门狗

    https://nodemcu.readthedocs.io/en/master/modules/tmr/

    杨奉武
  • 7nm工艺延期致股价暴跌,英特尔组织架构重大调整,首席工程师下月离职

    北京时间 7 月 28 日,英特尔 CEO Bob Swan 正式宣布,对公司的技术组织和执行团队进行调整。英特尔首席工程官 Murthy Renduchint...

    机器之心
  • CapsNet

    CNN做了什么事情呢? 假设这里有一个卷积核(左图),除了曲线轨迹上的值很大,其他的值都是零,所以这个卷积核对旁边这种曲线(右图)就有很高的输出,也就是说对这种...

    bye
  • 原生JS实现拖拽进度条显示相应的内容

    越陌度阡

扫码关注云+社区

领取腾讯云代金券