''' 在Python中,使用threading.Thread类创建守护线程可以通过设置daemon参数为True来实现。 守护线程是一种特殊的线程,它会随着主线程的结束而自动退出(守护线程会随着主线程的结束而自动退出。因此,如果主线程先结束,守护线程也会立即退出,无论守护线程是否执行完成。),无需手动调用join()方法等待守护线程执行完成。 最佳实践: 1. 在创建threading.Thread对象之前将daemon参数设置为True,确保线程启动之前就被标记为守护线程。 2. 当所有非守护线程都结束时,Python解释器会检查是否还有活动的守护线程。如果只剩下守护线程,Python解释器会直接退出程序,不会等待守护线程执行完成。 3. 尽量避免在守护线程中进行耗时的操作或阻塞式的I/O操作,因为守护线程会在主线程结束时立即退出,可能导致未完成的操作被中断(资源未释放)。 4. 如果守护线程需要与其他线程进行通信或共享数据,应该使用适当的线程同步机制,如锁(Lock)、条件变量(Condition)等。 ''' import threading import time def task(): while True: print("Daemon thread is running") time.sleep(1) def main(): # 方式1: 创建线程时指定为守护进程 daemon_thread = threading.Thread(target=task, daemon=True) # 方式2: 创建线程后,通过线程的daemon属性为True设置为守护线程 # daemon_thread = threading.Thread(target=task) # daemon_thread.daemon = True # 设置守护线程 daemon_thread.start() time.sleep(5) # 主线程等待5秒 print("Main thread finished")
输出:
Daemon thread is running Daemon thread is running Daemon thread is running Daemon thread is running Daemon thread is running Main thread finished