“开启掘金成长之旅!这是我参与「掘金日新计划 · 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)
当我们运行上面的代码时,控制台打印出来的结果,是这两不相等。也就是说线程是可以重名的,并且进一步说明,线程的名字并不是线程中的唯一标识,但是该避免重名还是要避免的。如下图所示:
2 守护进程(daemon)
daemon的解释:
daemon在python 中也会用到,那么它用来干嘛的呢。daemon默认是false。
现在我们把它是true呢,随便在参数里设,还是xx.daemon中设为true,都是可以,前提是在start前。
你直接python执行它的时候,是有区别的,daemon为False时,会有个停留,执行完后才会退出,而daemon为True时,立马执行完毕后,直接退出,也就说可能你还没打印完,它就结束了。
3 总结
线程名并不会影响线程什么,但是还是尽量避免重名的问题,线程重名,就有点类似出生了两个婴儿,都起了相同的名字,也就说身份证上的名字是一样的,那么你能说这两人是同一个人嘛,很明显他们是独立的个体。而daemon仅供了解,知道它俩的区别就行,只要保持默认设置即可。