如何处理挂起的子线程?

时间:2016-08-22 16:23:57

标签: python multithreading api design-patterns

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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