为什么线程死机/阻塞?

2024-09-27 17:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个函数collect\u data使用4个线程从4个网站(比如网站ad)收集数据,同时更新mysql表中的数据; 在表中,有4个字段,每个字段存储来自一个网站的数据 4个线程更新表时不使用锁。 4个线程每10秒在mysql中收集数据并更新数据。在

def collect_data(site_list = ['a', 'b', 'c', 'd']):
     for site in site_list:
        InfoCollectingThread(site).start()

很不幸,mysql在3小时后就没有新的记录了。 一些线程似乎也会提前死亡,因为相应的字段没有提前更新。在

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


Tags: 数据函数infordata网站defmysql
1条回答
网友
1楼 · 发布于 2024-09-27 17:30:07

有太多的理由让我们无法猜测。我可以为您提供一些关于如何解决此问题的建议:

  • 将调试输出添加到线程的事件循环中,以便更好地了解它们在做什么。在
  • 在所有线程函数中添加异常处理(例如,try-finally部分)以及调试输出。这样,如果一根线死了,你就知道了。在
  • 添加一个信号处理程序,它将打印出所有活动线程的堆栈跟踪,并在出现故障后使用它检查程序的状态。您可以找到一些有用的代码here。在

相关问题 更多 >

    热门问题