python笔记 线程参数的补充

47 阅读2分钟

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

0 环境

  • 编辑器:pycharm或者vscode
  • 系统版本:windows10
  • 编辑器版本:最新
  • 浏览器:谷歌

1 控制线程重名

线程可以通过name这个参数,来给线程起个名字,但不同于多个指针指向同一块内存。如下图所示:

import threading
import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(levelname)s %(process)s %(thread)s %(name)s %(message)s',
                    datefmt='%Y年%m月%d日  %H:%M:%S',
                    filename= './logs/log.log')

def sum(a, b):
    logging.error(f"hello world,{a + b} \n")


t = threading.Thread(target=sum, args=(11, 12), name="a")
t1 = threading.Thread(target=sum, args=(21,), kwargs={'b': 22}, name="a")
t.start()
t1.start()
print("线程重名 -->", t == t1)

image.png 当我们运行上面的代码时,控制台打印出来的结果,是这两不相等。也就是说线程是可以重名的,并且进一步说明,线程的名字并不是线程中的唯一标识,但是该避免重名还是要避免的。如下图所示: image.png

2 守护进程(daemon)

daemon的解释: image.png daemon在python 中也会用到,那么它用来干嘛的呢。daemon默认是false。 image.png 现在我们把它是true呢,随便在参数里设,还是xx.daemon中设为true,都是可以,前提是在start前。 image.png 你直接python执行它的时候,是有区别的,daemon为False时,会有个停留,执行完后才会退出,而daemon为True时,立马执行完毕后,直接退出,也就说可能你还没打印完,它就结束了。

3 总结

线程名并不会影响线程什么,但是还是尽量避免重名的问题,线程重名,就有点类似出生了两个婴儿,都起了相同的名字,也就说身份证上的名字是一样的,那么你能说这两人是同一个人嘛,很明显他们是独立的个体。而daemon仅供了解,知道它俩的区别就行,只要保持默认设置即可。