PySpin双相机采集随机触发Fatal Python error: Aborted求助
随机触发Fatal Python error: Aborted问题排查求助
之前运行正常的代码未做任何修改,现在频繁触发如下错误:
Fatal Python error: Aborted Main thread: Current thread 0x000027c4 (most recent call first): File "c:\users\nate\onedrive\documents\github\havoc\hav_pyrometertest_single_frame.py", line 19 in main File "c:\users\nate\onedrive\documents\github\havoc\hav_pyrometertest_single_frame.py", line 38 in <module> File "C:\Users\nate\miniconda3\envs\spyder_env\lib\site-packages\spyder_kernels\py3compat.py", line 356 in compat_exec File "C:\Users\nate\miniconda3\envs\spyder_env\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 473 in exec_code File "C:\Users\nate\miniconda3\envs\spyder_env\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 615 in _exec_file File "C:\Users\nate\miniconda3\envs\spyder_env\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 528 in runfile File "C:\Users\nate\AppData\Local\Temp\ipykernel_17400\3451480624.py", line 1 in <module>
我使用PySpin控制两台相机采集图像,添加打印语句排查时发现错误触发位置不固定,怀疑问题并非出自代码本身,而是与Spyder环境相关。
主文件代码如下:
import sys import time import HAV_PyrometerFunctions_single_frame as pyr acquisition_duration = 5 def main(): result, cam_list = pyr.initialize_cameras() count = 0 elapsed = 0 t_start = time.time() while elapsed < acquisition_duration: try: result = pyr.run_multiple_cameras(cam_list) count += 1 elapsed = time.time() - t_start except: print("error") print(count, "images") pyr.deinitialize_cameras() return result if __name__ == '__main__': if main(): sys.exit(0) else: sys.exit(1)
函数文件共500行,可提供相关片段,现求助排查该随机错误的原因及解决方法。
排查方向与解决建议
- 脱离Spyder环境验证:在Anaconda Prompt中激活
spyder_env环境,执行python hav_pyrometertest_single_frame.py直接运行脚本,若不再崩溃则确认是Spyder内核交互问题。 - 完善资源释放逻辑:检查
run_multiple_cameras中是否每次采集都正确释放图像缓冲区、相机句柄等资源;当前代码的try-except仅打印错误,需补充异常场景下的相机资源应急清理,避免资源泄漏导致崩溃。 - 调整Spyder及依赖版本:更新Spyder到最新稳定版,或回退至代码正常运行时的版本,同时确保
spyder_kernels包版本与Spyder匹配。 - 增强错误日志:将
except:改为except Exception as e:并打印具体异常信息;在run_multiple_cameras的关键步骤(如采集、图像处理)添加详细日志,便于定位触发点。 - 监控系统资源:采集时查看任务管理器,确认CPU、内存、磁盘IO是否存在耗尽情况,排除系统强制终止进程的可能。
- 测试单相机场景:临时修改代码仅初始化一台相机,验证是否仍出现随机崩溃,排除多相机硬件资源冲突的问题。
内容的提问来源于stack exchange,提问作者Nate
相关产品推荐
相关产品推荐

