带有事件对象的Python线程

发布于 2021-01-29 17:48:06

我已经看到很多在类中使用Threads的Python脚本,其中许多使用threading.Event()。例如:

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

    def run(self):
        while not self.event.is_set():
            print "something"
            self.event.wait(120)

while循环中,为什​​么不设置条件就检查条件self.event

关注者
0
被浏览
42
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    因为其他人会设置它。

    通常,您在应用程序的一部分中启动一个线程,然后继续执行您所做的任何事情:

    thread = TimerClass()
    thread.start()
    # Do your stuff
    

    当您执行操作时,线程会执行操作。如果要终止线程,则只需调用:

    thread.event.set()
    

    并且线程将停止。

    因此,答案是:在这种情况下,事件不用于从线程对象本身内部控制线程。它用于从外部(从持有对线程的引用的对象)控制线程。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看