如何杀死一个特定的线程,不知道它的参考?

时间:2016-12-10 00:04:53

标签: python multithreading python-3.x python-multithreading

假设我每10秒播放一次声音。 我还有一个settings文件,其中包含一定数量的线程设置(id,播放声音)。我的主脚本取消了每个线程设置,然后用自己的设置启动尽可能多的线程。

我的问题是,如何杀死其中一个线程,只有一个?不是第一个或最后一个,我希望能够选择哪一个。它甚至可能吗?

我考虑给每个线程一个引用,但是因为我从settings文件中获取它们,所以我不知道有多少线程需要启动。

发声线程

class MyThread(Thread):

    def __init__(self, sound):
        Thread.__init__(self)
        self.sound = sound
        self.stopped = False

    def run(self):
        while not self.stopped:
            #Totally made up function, as an example
            playsound(self.sound)
            time.sleep(10)

    def stop(self):
        self.stopped = True

主要文字:

threads = []
with open('settings', 'rb') as f:
    while True:
        try:
            threads.append(pickle.load(f))
            continue
        except EOFError:
            break

for i in range(threads)
    #Model of threads: [id, sound], [id, sound], [id, sound]...
    MyThread(i[1]).start()

0 个答案:

没有答案