首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么线程死了/阻塞了?

为什么线程死了/阻塞了?
EN

Stack Overflow用户
提问于 2014-12-25 07:51:17
回答 1查看 214关注 0票数 0

我编写了一个函数collect_data,它使用4个线程从4个网站(例如,网站a至d)收集数据,并在mysql表中进行简单的更新;在表中,有4个字段,每个字段存储来自一个网站的数据,在更新该表时使用无锁。这4个线程每10秒在mysql中收集数据和更新数据。

代码语言:javascript
复制
def collect_data(site_list = ['a', 'b', 'c', 'd']):
     for site in site_list:
        InfoCollectingThread(site).start()

不幸的是,在运行了一段时间(比如3个小时)之后,mysql中没有新的记录。另外,由于没有提前更新相应的字段,一些线程似乎会提前死亡。

我的问题是,在我的设计过程和任何解决方案中存在什么问题?圣诞快乐。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-25 08:19:50

有太多的可能原因和太少的信息让我们作出知情的猜测。我可以为您提供一些关于如何解决此问题的建议:

  • 将调试输出添加到线程的事件循环中,以更好地了解它们正在做什么。
  • 在所有线程函数周围添加异常处理(例如,一个try-finally部分),并带有调试输出。这样,如果一根线死了,你就会知道。
  • 添加一个信号处理程序,该处理程序将输出所有活动线程的堆栈跟踪,并在发生故障后使用它检查程序的状态。您可以找到一些有用的代码here
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27645295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档