gpt4 book ai didi

python - 线程在 Python 中随机停止

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:01 25 4
gpt4 key购买 nike

我一直在玩 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这个线程才会停止。

最佳答案

你已经得到了基本的答案,但有一个细节你需要注意:当主程序结束时,作为关闭处理的一部分,Python 在所有非守护进程上调用 .join() threading 模块创建的线程。您覆盖了 .join(),因此 Python 调用您的 .join()。这反过来会设置事件,因此您的 .run() 方法会静默退出。

关于python - 线程在 Python 中随机停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36699899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com