0

我定义了 A 类,它有这样的方法。

def func(self):
    while True:
        threading.Timer(0,self.func2, ["0"]).start()
        time.sleep(nseconds)
        threading.Timer(0,self.func2, ["1"]).start()
        time.sleep(nseconds)  

如果我在另一个脚本中定义一个此类的实例并运行func该实例的方法,我如何才能中断 while 循环并正确停止这些线程?我是否需要 A 类中的 ctrl-c 信号处理程序,如果需要如何?注意:我也在A 类os.system的方法中通过函数调用系统调用func2。问题是当我运行主脚本文件并尝试停止这些线程的运行时,它们并没有停止。

4

1 回答 1

3

有无数种方法可以实现你想要的,最直接的方法之一就是使用事件

from threading import Event

class Foo(object):

    def __init__(self):
        # the stop event is initially set to false, use .set() to set it true
        self.stop_event = Event()

    def func(self):
        while not self.stop_event.is_set():
           # your code

同时在其他一些线程中(假设您正在谈论的对象是obj):

obj.stop_event.set()

在下一次迭代中完成循环。

于 2013-10-23T07:50:21.330 回答