📜  python 如何重启线程 - Python (1)

📅  最后修改于: 2023-12-03 15:19:08.717000             🧑  作者: Mango

Python 如何重启线程

在 Python 中,重启线程的操作是比较简单的。下面我们就通过代码来讲解。

暂停线程

首先,我们需要先了解如何暂停线程。

import time
import threading

class MyThread(threading.Thread):
    def run(self):
        print("Start")
        for i in range(1, 5):
            time.sleep(1)
            print("working...")
        print("End")

if __name__ == '__main__':
    t = MyThread()
    t.start()
    time.sleep(2)
    t.join()

上面的代码中,我们使用了 time.sleep() 方法来让线程 sleep 2 秒钟,而 t.join() 方法则是等待线程结束。

重启线程

接下来,我们看一下如何重启线程。

if __name__ == '__main__':
    t = MyThread()
    t.start()
    time.sleep(2)
    t._stop()  # 终止线程
    t = MyThread()  # 新建线程
    t.start()
    t.join()

上面的代码中,我们先是终止了之前的线程,然后新建了一个线程并启动。这样就达到了重启线程的目的。

当然,使用 _stop() 方法来终止线程是不太安全的,更好的方法是使用 Event 来控制线程的启动和停止。

class MyThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.event = threading.Event()

    def run(self):
        print("Start")
        for i in range(1, 5):
            self.event.wait()  # 等待启动事件
            print("working...")
        print("End")

if __name__ == '__main__':
    t = MyThread()
    t.start()
    time.sleep(2)
    t.event.set()  # 启动线程
    time.sleep(2)
    t.event.clear()  # 停止线程
    time.sleep(2)
    t.event.set()  # 再次启动线程
    t.join()

上面的代码中,我们使用了 Event 来控制线程的启动和停止。当 event 对象被设置时,线程就会开始执行任务,当 event 对象被清除时,线程就会停止。

以上就是 Python 如何重启线程的介绍。