写的一个爬虫程序,主要用到以下库。但是伴随着代码增多,功能增多。经常性的程序崩溃现象,逐渐显现。
pyqt5_5.8.2,requests.get,selenium+chorme,threading.Thread,queue.Queue
多次完善代码与程序,甚至已经尝试了各种python版本,与pyqt5版本。甚至pyqt5-tools的版本也换了,都无法处理程序崩溃。
关于访问系统的地方,都已经加了线程锁。
程序崩溃的情况,基本上都会在程序运行一段很短的时间后就出现。
根据程序多次崩溃的情况,无法总结出崩溃的特征。出现崩溃的情况毫无征兆,每一次都出现在程序流程的不同地方。
目前可见的怀疑点在于pyuic转换ui文为py文件,生成的py文件总有一行代码
1 QtCore.QMetaObject.connectSlotsByName(MainWindow)
无法解析导致出错,把这行代码注释也是可以运行,经查网上的信息,说法甚少。
只找到一处,说到这行代码是与程序ui界面刷新有关。
总是出现程序崩溃,难以排查原因。
问题事件名称: APPCRASH 应用程序名: python.exe 应用程序版本: 3.6.6150.1013 应用程序时间戳: 5b330722 故障模块名称: Qt5Gui.dll 故障模块版本: 5.8.0.0 故障模块时间戳: 587fd80f 异常代码: c0000005 异常偏移: 00000000000f3991 OS 版本: 6.1.7601.2.1.0.256.1 区域设置 ID: 2052 其他信息 1: b872 其他信息 2: b87237fef27100b1f99611e72e190746 其他信息 3: cddc 其他信息 4: cddc7f932bc69399719fb6c3bca599fa
这样的出错信息,经查网上信息,说法倒是挺多。具体原因是可能是内存泄露。
因为故障模块是Qt5Gui.dll,很有可能是pyqt5库方面的问题,联想到那一行无法解析的代码。有可能这个崩溃是因为那一行无法解析的代码造成的。
_________________________________________________________________________________________________________________________
多次测试,终于发现故障点所在。程序中设置了一个textBrower,用来实时显示信息。一是多线程运行程序时,有很多信息需要输出到tecxtBrower,输出信息过快导致程序崩溃。二是输出信息后,再做一个定位光标到文本最底,同样的因为输出信息太多,显示速度过快,导致崩溃。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python程序爬虫总是崩溃 - Python技术站