【发布时间】:2016-04-18 16:53:35
【问题描述】:
我一直在玩 Python 中的线程,并通过以下代码发现了一些有趣的东西:
import time
import threading
class Update(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.stop_event = threading.Event()
def join(self, timeout=None):
self.stop_event.set()
threading.Thread.join(self, timeout)
def run(self):
while not self.stop_event.isSet():
print("test")
thread = Update()
thread.start()
即使我不调用 join() 方法,此代码也会随机停止。结果,我得到了不同的输出,如下所示:
test@debian:~/$ python3 test.py
test
test
test
test
test@debian:~/$ python3 test.py
test
test
test
test
test
test
test
test@debian:~/$ python3 test.py
test
test
为什么这段代码会随机停止?我以为只有设置 stop_event 这个线程才会停止。
【问题讨论】:
-
请注意打印不是线程安全的:stackoverflow.com/questions/18234469/…
-
@JoãoPinto:这个问题实际上与线程安全无关。它甚至不使用任何线程;相反,它分叉了一堆进程,我认为这些进程与问题没有任何关系。
-
评论不是答案,我的评论是在用户尝试使用打印到标准输出来调试多线程应用程序的上下文中提供的。
标签: python multithreading