【python算法工程】python threading damon为True或者False有啥区别

在 Python 中使用 threading.Thread 时,可以设置 daemon 属性来指定线程是否为守护线程(daemon thread)。这个属性的值可以是 True 或 False,每种情况下会有不同的影响:

1. daemon=True:

• 当一个线程被设置为守护线程时,Python解释器在程序的所有非守护线程都终止后会立即退出,不会等待守护线程完成它们的任务。

• 守护线程适用于后台运行的任务,例如日志记录、监控等,这些任务在主程序结束时可以不必完成。

2. daemon=False(默认值)

• 非守护线程是默认线程类型。Python解释器会等待所有非守护线程都完成后才会退出。

• 如果一个非守护线程没有结束,程序将不会退出,解释器会一直等待该线程完成。

import threading
import time

def background_task():
    while True:
        print("Background task running...")
        time.sleep(1)

# 创建一个守护线程
daemon_thread = threading.Thread(target=background_task, daemon=True)
daemon_thread.start()

# 创建一个非守护线程
non_daemon_thread = threading.Thread(target=background_task, daemon=False)
non_daemon_thread.start()

# 主线程睡眠5秒,然后退出
time.sleep(5)
print("Main thread exiting...")

在这个例子中:

• daemon_thread 是一个守护线程,主线程在 5 秒后退出时,守护线程也会立即终止。

• non_daemon_thread 是一个非守护线程,即使主线程在 5 秒后退出,解释器也会等待该线程完成(这在实际中可能导致程序无法退出,因为 background_task 是一个无限循环)。

通过设置 daemon 属性,你可以控制线程的生命周期,从而根据需要决定它们是否需要在主程序退出时继续运行或立即终止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kakaZhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值