守护进程VS守护线程

守护(daemon)进程

引入:

  join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程。

  join()方法和daemon()方法都是改变进程顺序的方法。

特点:

  1.daemon()方法要写在start()方法之前。

  2.子进程被设置成守护进程后,一旦主进程代码执行完毕,不管子进程是否运行完毕,子进程都会立即终止。

代码示例:

 1 from  multiprocessing  import  Process
 2 import os,time,random
 3 def   task():
 4     print(‘runing ‘,os.getpid())
 5     time.sleep(random.randint(1,3))
 6     print(‘done‘,os.getpid())
 7 if __name__ == ‘__main__‘:
 8     p1 = Process(target=task)
 9     p1.daemon = True#将p1设置成守护进程
10     p1.start()
11     print(‘主进程‘,os.getpid())

  

时间: 2024-11-12 16:48:36

守护进程VS守护线程的相关文章

浅谈守护进程和守护线程

线程是由进程开启的,当开启线程的进程离开时,该线程也自然而然的去了. 一般情况下, Python 中的多线程操作有两种方式: 1.函数式 创建一个活动函数,将函数当做参数传入,然后用 threading 模块: threading.Thread(target = 函数名,args = (a,b)) 2.继承 去继承一个来自 threading.Thread 的类,功能写在 self.run() 中 方法1: from threading import Thread import time def

[Linux] 守护进程和守护线程

对于JAVA而言,一般一个应用程序只有一个进程——JVM.除非在代码里面另外派生或者开启了新进程. 而线程,当然是由进程开启的.当开启该线程的进程离开时,线程也就不复存在了. 所以,对于JAVA而言,线程是完全可以由自己的API自由产生.例如new Thread().但是进程就不同,必须通过调用OS的API,如Runtime.getRuntime.exec(). 所以说,进程是OS级别的概念. 守护线程和用户线程的区别: 二者其实基本上是一样的.唯一的区别在于JVM何时离开. 用户线程:当存在任

守护进程与守护线程的区别

守护进程与守护线程的区别 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 #1.对主进程来说,运行完毕指的是主进程代码运行完毕 #2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕 详细解释: #1 主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束, #2 主线程在其他非守护线程运行完

关于守护进程和守护线程的区别

一.守护进程 1.1.什么是守护进程? 1.守护进程会在主进程代码运行结束的情况下,立即挂掉. 2.守护进程本身就是一个子进程. 3.主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束, 1.2.为什么要用守护进程? 1.守护进程本身就是一个子进程,所以在主进程需要将任务并发执行的时候需要开启子进程. 2.当该子进程执行的任务生命周期伴随着主进程的生命周期时,就需要将该子进程做成守护进程.

守护进程及守护进程输出

1 创建一个输出程序 2 创建一个守护进程 1 创建一个输出程序 守护进程不与终端联系,所以,需要另外创建一个程序用于输出. 也可以直接使用/bin/echo ----- example_daemon_help.cc #include <stdio.h> int main(int argc, char** argv) { if(argc == 1) { printf("only one parameter \n"); } else if(argc == 2) { print

守护线程与守护进程

一 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children 注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止 from multiprocessing import Process import time import random class Piao(Process): de

多进程(了解),守护进程,互斥锁,信号量,进程Queue与线程queue

一.守护进程 主进程创建守护进程,守护进程的主要的特征为:①守护进程会在主进程代码执行结束时立即终止:②守护进程内无法继续再开子进程,否则会抛出异常. 实例: from multiprocessing import Process from threading import Thread import time def foo(): # 守护进程 print(123) time.sleep(1) print("end123") def bar(): print(456) time.sl

Python setdaemon守护进程

setdaemon守护进程 #_*_coding:utf-8_*_ __author__ = 'gaogd' import time import threading ''' 守护进程,如果主线程down了,子线程也就没有了. 下面先通过主进程生成main主线程,之后main主线程再生成10个子线程. ''' ''' def run(num):     if not num == 5:         time.sleep(1)     print 'Hi, I am thread %s..la

C#开发Linux守护进程

C#开发Linux守护进程 Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展到多进程,父子进程文件描述符共享,父子进程通讯.控制等方面,是实现Linux大型服务的基础技术之一. 去年我也曾写了一篇关于守护进程的帖子,名字叫<.NET跨平台实践:用C#开发Linux守护进程>,这篇文章的的确确实现了一个Daemon,不过,它有一个弱点,不能运行多