首页 > 其他分享 >守护线程

守护线程

时间:2024-05-23 13:29:58浏览次数:22  
标签:name process start 线程 print main 守护

Python中的主线程是程序的起始线程,即程序启动时自动创建的第一个线程,它执行程序的主体逻辑。
守护线程则是在后台运行并依赖于主线程或非守护线程的存在。
【一】主线程死亡,子线程未死亡
主线程结束运行后不会马上结束,而是等待其他非守护子线程结束之后才会结束
如果主线程死亡就代表者主进程也死亡,随之而来的是所有子线程的死亡
from threading import Thread
import time

def work(name):
print(f'当前 {name} is beginning')
time.sleep(2)
print(f'当前 {name} is ending')

def main():
print(f' this is main process start ')
task = Thread(target=work, args=('dream',))
task.start()
print(f' this is main process end ')

if name == 'main':
main()

# this is main process start
# 当前 dream is beginning
# this is main process end
# 当前 dream is ending

【二】主线程死亡,子线程也死亡
from threading import Thread
import time

def work(name):
print(f'当前 {name} is beginning')
time.sleep(2)
print(f'当前 {name} is ending')

def main():
print(f' this is main process start ')
task = Thread(target=work, args=('dream',))

# 开启守护线程 , 主线程结束,子线程随之结束
task.daemon = True

task.start()
print(f' this is main process end ')

if name == 'main':
main()

#  this is main process start 
# 当前 dream is beginning
#  this is main process end 

标签:name,process,start,线程,print,main,守护
From: https://www.cnblogs.com/zenopan101861/p/18208227

相关文章

  • 线程互斥锁
    所有子线程都会进行阻塞操作,导致最后的改变只是改了一次fromthreadingimportThreadimporttimemoney=100deftask():globalmoney#模拟获取到车票信息temp=money#模拟网络延迟time.sleep(2)#模拟购票money=temp-1defmain():task_list=[Thread(ta......
  • 线程模块
    概述该模块基于pthread实现。sylar说,由于c++11中的thread也是由pthread封装实现的,并且没有提供读写互斥量,读写锁,自旋锁等,所以自己封装了pthread。包括以下类:Thread:线程类,构造函数传入线程入口函数和线程名称,线程入口函数类型为void(),如果带参数,则需要用std::bind进行绑定。线......
  • 浅谈一下C#和java的线程不同点
    C#和Java在线程处理方面有一些显著的区别,这些区别主要体现在线程的创建、管理和生命周期控制上。以下是一些主要的区别:线程的创建和管理Java:Java中线程的创建通常是通过继承Thread类或实现Runnable接口来实现的。Java提供了线程组(ThreadGroup)的概念,允许将线程组织在一起......
  • 守护进程--执行长期运行的任务
    守护进程(Daemon)是一种在后台运行的进程,通常用于执行系统服务或后台任务。守护进程在系统启动时自动启动,并在系统运行期间持续运行,直到系统关闭。它们不与用户直接交互,而是通过系统调用、网络请求、或其他进程间通信机制与其他进程进行交互。守护进程的主要特点和用途如下:后台运......
  • 进程间通信(管道),多线程
    Ⅰ进程间通信(管道)【一】引入借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出。这种通信方式是非阻塞的,即发送进程不需要等待接收进程的响应即可继续执行。multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的进程间通信(IPC)方式二......
  • Java实验五: Java多线程程序设计(头歌)
    一、线程接力编写一个应用程序,除了主线程外,还有三个线程:first、second和third。first负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)运动到(200,60)。third线程负责模拟一个蓝色的按钮从坐标(200,60)运动到(300,60)。第一步以下是ideajdk1.8的教......
  • 多线程
    【一】什么是线程在操作系统中,每一个进程都有一块内存空间地址,你的程序就泡在这块内存地址上不可能一个程序只有一个进程在处理所有数据和逻辑于是就有了线程这个概念:在进程内部开设的处理程序的进程操作系统-->运行一个程序叫进程--->进程里面又开了一个进程--->改名叫......
  • 关于线程池优雅关闭
    使用线程池的问题程序关闭时(eg.上线),线程池中的任务会丢失(内存中)。线程池优雅关闭利用Spring中ContextClosedEvent:关闭程序触发的事件,在使用线程池的地方,可以将线程池注册到ThreadPoolShutdownListener中,然后在程序关闭时,ThreadPoolShutdownListener会监听ContextClosedEvent事......
  • 进程&线程、并行&并发
    什么是进程开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。通俗解释当我们运行一个程序,那么我们将运行的程序叫进程。专业解释进程是申请一块内存空间,将数据放到内存空间中去,是申请数据的过程是最小的资源管理单元进程是线程的容器程序与进......
  • Process对象补充,僵尸孤儿进程,守护进程
    ⅠProcess对象的其他方法或属性(了解)【一】查看当前进程的进程ID【1】进程ID指的是某个应用程序运行在系统之上的标志【2】查看所有进程Windows系统CMD命令行tasklist即可查看Mac系统/linux终端运行psaux即可查看【3】如何根据指定进程号查看进程......