Python 为什么线程死了/阻塞了?
我编写了一个函数collect_data使用4个线程从4个网站(比如网站a到d)收集数据,同时更新mysql表中的数据; 表中有4个字段,每个字段存储来自一个网站的数据 4个线程更新表时不使用锁。 这4个线程每10秒在mysql中收集数据并更新数据Python 为什么线程死了/阻塞了?,python,multithreading,Python,Multithreading,我编写了一个函数collect_data使用4个线程从4个网站(比如网站a到d)收集数据,同时更新mysql表中的数据; 表中有4个字段,每个字段存储来自一个网站的数据 4个线程更新表时不使用锁。 这4个线程每10秒在mysql中收集数据并更新数据 def collect_data(site_list = ['a', 'b', 'c', 'd']): for site in site_list: InfoCollectingThread(site).start() 不
def collect_data(site_list = ['a', 'b', 'c', 'd']):
for site in site_list:
InfoCollectingThread(site).start()
不幸的是,经过一段时间的运行(比如3小时),mysql中没有新记录。
似乎有些线程提前终止,因为相应的字段没有提前更新
我的问题是,在我的设计过程中存在什么问题,有什么解决方案?
圣诞快乐。可能的原因太多,信息太少,我们无法做出明智的猜测。我可以为您提供一些解决此问题的建议:
- 将调试输出添加到线程的事件循环中,以便更好地了解它们在做什么
- 在所有线程函数周围添加异常处理(例如,一个
-try
部分),也包括调试输出。这样,如果一根线死了,你就知道了finally
- 添加一个信号处理程序,它将打印出所有活动线程的堆栈跟踪,并在出现故障后使用它检查程序的状态。您可以找到一些有用的代码