【问题标题】:How to deal with a child thread that hangs?如何处理挂起的子线程?
【发布时间】:2016-08-22 16:23:56
【问题描述】:

我有一个从使用挂起的多个线程的 API 中提取数据的过程。

  • 主线程启动子线程并等待,直到进行了 N 次 API 调用并且所有子线程都结束才结束;
  • 1 个子线程使用需要对 API 进行的调用来填充队列;
  • 8 个子线程执行 API 调用。

当其中一个 API 调用挂起时(不幸的是,我无法控制超时),子线程永远不会结束,主线程将永远继续等待子线程结束。

有没有办法强制子线程从主线程结束?或者,是否有一种经过验证的方法来执行不会产生此问题的此类数据收集过程?

【问题讨论】:

    标签: python multithreading api design-patterns


    【解决方案1】:

    当一个线程被创建时,你可以通过在调用它的start()方法之前显式设置它的daemon属性来控制它是否会在主线程退出时自动终止。请参阅在线文档的Thread Objects 部分。

    my answer 对类似问题也有相当详细的解释:
    What does sys.exit really do with multiple threads?.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2016-06-10
      相关资源
      最近更新 更多