python实现线程暂停和继续的代码
时间: 2023-12-14 22:38:27 浏览: 159
下面是一个Python实现线程暂停和继续的例子:
```python
import threading
import time
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.paused = False
self.pause_cond = threading.Condition(threading.Lock())
def run(self):
while True:
with self.pause_cond:
while self.paused:
self.pause_cond.wait()
# 线程执行的任务
print("Thread is running...")
time.sleep(1)
def pause(self):
self.paused = True
# 通知其他线程等待锁
self.pause_cond.acquire()
def resume(self):
self.paused = False
# 通知其他线程释放锁
self.pause_cond.notify()
self.pause_cond.release()
# 创建一个线程对象
t = MyThread()
t.start()
time.sleep(5)
# 暂停线程
t.pause()
print("Thread is paused...")
time.sleep(5)
# 继续线程
t.resume()
print("Thread is resumed...")
```
在这个例子中,我们创建了一个名为`MyThread`的线程类,该类继承自`threading.Thread`类,并重写了`run()`方法。`run()`方法是该线程执行的任务。在`run()`方法中,我们使用`with self.pause_cond`语句来获取锁并检查线程是否暂停。如果线程暂停,则等待`self.pause_cond`条件变量的通知。如果线程没有暂停,则执行线程的任务并等待一段时间。
除此之外,我们还定义了`pause()`和`resume()`方法来暂停和继续线程。在`pause()`方法中,我们将`self.paused`标志设置为`True`并获取锁,这将导致线程等待条件变量。在`resume()`方法中,我们将`self.paused`标志设置为`False`并通知等待条件变量的线程。然后,我们释放锁,使得其他线程可以获取锁并执行任务。
在主线程中,我们创建了一个`MyThread`类的实例`t`并启动它。然后,我们暂停线程`t`并等待5秒钟,然后恢复线程`t`并输出一条消息。
阅读全文