首页 > 编程语言 >python的守护线程(简介、作用及代码实例)

python的守护线程(简介、作用及代码实例)

时间:2023-05-22 12:26:04浏览次数:77  
标签:__ python print 实例 线程 fun main 守护

转载:(14条消息) python的守护线程(简介、作用及代码实例)_python守护线程的作用_HXH.py的博客-CSDN博客

python守护线程简介
守护线程的理解:
如果当前python线程是守护线程,那么意味着这个线程是“不重要”的,“不重要”意味着如果他的主进程结束了但该守护线程没有运行完,守护进程就会被强制结束。如果线程是非守护线程,那么父进程只有等到守护线程运行完毕后才能结束。
在python中,线程通过threadName.setDaemon(True|False)来设置是否为守护线程。

守护线程的作用:
守护线程作用是为其他线程提供便利服务,守护线程最典型的应用就是 GC (垃圾收集器)。
守护线程的特点:
只要当前 主线程中尚存任何一个非守护线程没有结束,守护线程就全部工作;
只有当最后一个非守护线程结束是,守护线程随着主线程一同结束工作。

代码实例:
情况一:线程为非守护线程

import time
import threading


def fun():
    print("start fun")
    time.sleep(2)
    print("end fun")

def main():
    print("main thread")
    t1 = threading.Thread(target=fun,args=(),daemon=False)
    #t1.setDaemon(False)
    t1.start()
    time.sleep(1)
    print("main thread end")

if __name__ == '__main__':
    main()

运行结果:

main thread
start fun
main thread end
end fun

说明:程序在等待子线程结束,才退出了。

情况二:线程为守护线程

import time
import threading


def fun():
    print("start fun")
    time.sleep(2)
    print("end fun")

def main():
    print("main thread")
    t1 = threading.Thread(target=fun,args=())
    t1.setDaemon(True)
    t1.start()
    time.sleep(1)
    print("main thread end")

if __name__ == '__main__':
    main()

结果:

main thread
start fun
main thread end

说明:程序在主线程结束后,直接退出了。 导致子线程没有运行完。

 

标签:__,python,print,实例,线程,fun,main,守护
From: https://www.cnblogs.com/zhiminyu/p/17420260.html

相关文章

  • Vue购物车实例练习
    功能介绍金额=单价*数量金额会自动根据数量的变化进行变化,我们可以点击按钮增加或减少商品的数量。合计金额:只有在序号列号勾选上才会被计入总金额中,金额总数会根据用户的操作自动更新数据。删除:如图我们勾选了第2个商品,当我们点击删除时,只会删除被选中的产品。全选:点击......
  • 机器学习数据顺序随机打乱:Python实现
      本文介绍基于Python语言,实现机器学习、深度学习等模型训练时,数据集打乱的具体操作。1为什么要打乱数据集  在机器学习中,如果不进行数据集的打乱,则可能导致模型在训练过程中出现具有“偏见”的情况,降低其泛化能力,从而降低训练精度。例如,如果我们做深度学习的分类,其中初始......
  • python 办公常用一:从文本文件中提取手机号码
    python办公常用一、从文本文件中提取手机号码给定一个文本文件从中提取所有手机号码importredefmain():withopen(path,encoding="utf-8")asf:data=f.read()res=re.findall(r'(?:13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-3......
  • Python 4-05 sys
    syssys模块主要是针对与Python解释器相关的变量和方法,不是主机操作系统。导入方式:importsys属性及方法使用说明sys.argv获取命令行参数列表,第一个元素是程序本身sys.exit(n)退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异......
  • Python 4-07 jieba
    https://github.com/felinx/jieba"结巴"中文分词一、jiebaclassTokenizer(object):#分词器defcut(self,sentence,cut_all=False,HMM=True,use_paddle=False):"""Themainfunctionthatsegmentsanentiresentencethatconta......
  • Python 1-19 集合
    Python1-19集合集合(set)是一个无序的不重复元素序列。创建集合,使用{}或者set(),注意:创建一个空集合必须用set(),因为{}是用来创建一个空字典。parame={value01,value02,...}或者set(value)>>>basket={'apple','orange','apple','pear','orange�......
  • Python 2-04 匿名函数
    Python匿名函数一、匿名函数lambdaλlambda[args]:expression即lambda[参数列表]:表达式lambda_add=lambdax,y:x+ydefnormal_add(x,y):returnx+yassertlambda_add(2,3)==normal_add(2,3)注:assertexpression[,arguments]即:assert表达式......
  • Python 1-14 列表
    Python1-14列表一、Python列表Python的列表是一个有序可重复的元素集合classlist([iterable])虽然被称为函数,list实际上是一种可变序列类型。1、创建创建一个列表,在方括号括中用逗号分隔不同的数据项。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。>>......
  • Python 1-14 列表
    Python1-14列表一、Python列表Python的列表是一个有序可重复的元素集合classlist([iterable])虽然被称为函数,list实际上是一种可变序列类型。1、创建创建一个列表,在方括号括中用逗号分隔不同的数据项。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。>>......
  • Python 2-03 递推和递归
    递推和递归一、递推算法Recursionmethod递推算法是通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。递推算法分为顺推和逆推两种。动态规划1、顺推法所谓顺推法是从已知条件出发,逐步推算出要解决的问题的方法叫顺推。#n!阶乘deffactorial(n):t=1fori......