You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:53:19