我觉得你的问题可能是这样
并不是说打印了 The End 主线程就会“立刻”结束,可能还会持续一小段时间,所以
可能足够 daemon 的子线程打出来点东西
对 Python3 来说,那个 print 函数会整体输出,所以一般会打出来
reading 0
The End
或者仅有
The End
前者可能性较大
而 Python2 里,那个 print 并不是函数,而是用 print 语句输出一个 tuple,
而且整个内容并不是整体输出的,所以可能打印出各种情况,总结起来:
1. daemon 线程会(试图)打印出 ('reading', 0) 但可能会中途截断
2. 然后在上述输出过程中,会随机插入一个 The End
所以你看到的结果可能是
('reading', The End
0)
(The End
('reading', 0The End
(The End
'reading', 0)
等等
【 在 giantman (捷安特·建特·脑白金) 的大作中提到: 】
: 开始学习python中的多线程,可是我发现按照书上的例子,将子线程的daemon无论设成True还是False,结果都一样,子线程都不能随主线程的结束而结束,而且每次运行,结果都不完全一样,不知道是怎么回事?
: 程序如下:
: import threading
: ...................
--
FROM 61.149.236.*