一个线程要如何正确的停止,写一个线程他不停的向屏出输出信息(显示我正在计算请等待……) 一个线程模拟去计算(sleep一段时间),第二个线程时间到了,我们就停止第一个线程。
时间: 2024-03-16 14:42:10 浏览: 13
要正确停止一个线程,可以通过设置一个标志位,在需要停止线程的时候将标志位设置为True,然后在线程内部不断检查这个标志位,如果发现标志位为True,则退出线程。
以下是一个不停输出信息的线程的示例代码:
```python
import threading
import time
class OutputThread(threading.Thread):
def __init__(self):
super(OutputThread, self).__init__()
self.stopped = False
def run(self):
while not self.stopped:
print("正在计算,请等待...")
time.sleep(1)
def stop(self):
self.stopped = True
```
接下来,我们可以创建一个模拟计算的线程,当这个线程运行一定时间后,就会停止输出线程。
以下是示例代码:
```python
class CalcThread(threading.Thread):
def __init__(self, output_thread, duration):
super(CalcThread, self).__init__()
self.output_thread = output_thread
self.duration = duration
def run(self):
# 模拟计算
time.sleep(self.duration)
# 停止输出线程
self.output_thread.stop()
```
最后,我们可以通过创建一个输出线程和一个计算线程,并启动它们来测试我们的代码:
```python
if __name__ == '__main__':
output_thread = OutputThread()
calc_thread = CalcThread(output_thread, 5)
output_thread.start()
calc_thread.start()
calc_thread.join()
output_thread.join()
print("程序结束")
```
在这个示例中,我们创建了一个输出线程和一个计算线程,输出线程会不断输出"正在计算,请等待...",而计算线程会模拟计算5秒钟后停止输出线程。最后,我们等待计算线程和输出线程运行结束,并输出"程序结束"。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)