【问题标题】:How do I terminate selected threads如何终止选定的线程
【发布时间】:2012-08-27 12:43:33
【问题描述】:

我有一个代码,其中有两种类型的线程。从第二个产生了 3 个线程。我想知道是否有一个函数可以调用,它会终止第二个类型的三个衍生线程,但仍然保持第一个运行。

【问题讨论】:

标签: python multithreading


【解决方案1】:

一个常见的解决方案是有一个全局变量,线程检查它们是否应该终止。

编辑:一种方法的示例:

class MyThread(Thread):
    def __init__(self):
        self.keep_running = True

    def run(self):
        while self.keep_running:
            # Do stuff

my_thread = MyThread()
my_thread.start()

# Do some other stuff

my_thread.keep_running = False
my_thread.join()

【讨论】:

  • 如何动态地完成这个检查,作为一个中断。基本上我将创建一个网页,如果用户按下一个按钮,它将发送一个 HTTP GET 来终止所有第二种类型的线程。
  • @sHoM 添加了一个小例子,希望能给你一个想法。
  • @sHoM 不必如此,在这种情况下,您不必调用join,当然,如果您的程序退出,您将无法杀死这些线程.
  • 我做了与上面完全相同的事情,但它没有离开 While 循环,而是在 while 内继续相同的操作。
【解决方案2】:

您可以为每种类型的线程保留一个线程池,然后相应地终止它们。例如,您可以将它们全局保存在 Queue.Queue 中,然后根据需要分别保存在 .stop() 中。

编辑// 您可以使用.join() 将您希望停止的每个子线程加入其父线程

【讨论】:

  • 我需要一个函数来终止它们,无论它们处于哪种状态。
  • 你可以将他们加入他们的父母并杀死父母(见我的编辑)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2010-09-22
  • 2012-01-29
  • 1970-01-01
  • 2017-04-27
相关资源
最近更新 更多