关于在pycharm中调用gdal库时引发code -1073740791错误而退出问题的解决

背景:在pycharm中使用python操作gdal库时,控制台报错:

Process finished with exit code -1073740791 (0xC0000409)

然后程序直接退出,无其他提示。

一、问题理解。

pycharm官网中查不到关于该代码的解释,只查到关于JavaFX Application中报出相同问题的提问,这个结果是与显卡驱动相关。

官网问答

根据查到的消息,我觉得code -1073740791 (0xC0000409)表示的错误是,程序由于计算机系统本身性能不足,或是由于对调用的方法理解偏差,导致的库内冲突引发的程序中断。

二、问题解决思路

1.打开模拟输出到终端,以确认问题

具体操作看引用,这里赘述。打开后再运行,有可能发现问题提示,如果发现,再根据提示进行解决即可。

Process finished with exit code -1073740791 (0xC0000409)_chenyulancn的博客-CSDN博客https://blog.csdn.net/chenyulancn/article/details/121906467

2.判断是否是显卡内存相关问题,如果不是跳过该步骤

检查下pycharm中对于内存配置是否不够。

python中关于Process finished with exit code -1073740791 (0xC0000409)的解决办法_老班(Snow)的博客-CSDN博客_1073740791代码错误有些小伙伴在运行python程序的时候会遇到上图这种情况。对于这种情况不要着急,使用排除法很容易解决。情况一(也是网上较多的情况):(显卡)内存不足这个时候,我们可以在pycharm里调一下内存:在pycharm的顶部,选择“Help”选择“Find Action”然后会跳出一个小小的搜索工具栏,选择ALL,然后输入“VM”选择红色框框这个文件全部内容如下:其中:Xms128m中,Xms是指程序启动时所需要的内存,128m就是大小Xmx1011m中,Xmx是指程序运行时所需要的.https://blog.csdn.net/weixin_44553473/article/details/109747689多个显卡时注意分配好显卡的计算资源。finished with exit code -1073740791 (0xC0000409)解决方案_weixin_30588729的博客-CSDN博客https://blog.csdn.net/weixin_30588729/article/details/94881565显卡本身能力有限时,也会报错,这时候考虑训练数据分part处理。

Python笔记——pyCharm错误: Process finished with exit code -1073740791 (0xC0000409)_Dean0Winchester的博客-CSDN博客楼主在pyCharm上搭建深度神经网络做图像生成时, 运行代码, 报错:Process finished with exit code -1073740791 (0xC0000409)原因:显卡内存不足!解决办法:将训练数据分成数量较小的batchhttps://blog.csdn.net/qq_38906523/article/details/79752999

3.尝试将发生问题的库进行卸载重装

有可能是库本身安装不正确不完整导致的问题,卸载重装能解决问题。经常看到的时pyqt这个库,其他的也可以考虑试一试。

4.程序本身对库方法使用的问题

有些库的方法被错误使用,并不能直接看出来,需要你去了解库方法相关使用方法和注意事项才行。例如下面这两种:

Pycharm运行PyQt5报错: Process finished with exit code -1073740791 (0xC0000409)_随便学点啥的博客-CSDN博客https://blog.csdn.net/qq_26761495/article/details/80552411?spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-12.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-12.pc_relevant_default&utm_relevant_index=13python中关于Process finished with exit code -1073740791 (0xC0000409)的解决办法 - poowicat - 博客园https://www.cnblogs.com/poowicat/p/14775737.html

遇到问题时,尝试进行单元测试,确认下发生问题的导致退出的是哪一个库或是哪些方法,然后检查下这几对这些库方法的使用是否有问题,如果不确定的,最好使用一些别人实现过的代码。

个人案例:

本人一开始盯着code-1073740791 (0xC0000409)去查找问题,一直解决不了,后面才知道要真正定位问题,到对应代码,对应库中找原因。

这里,本人打算已我遇到的情况进行稍微展开的分析,直接上代码。

from osgeo import ogr
………………
geomlist=[]
dirlist=[]
roadlist=[]
feature = layer.GetNextFeature()
while feature:

    roadid=feature.GetField('arcid')
    angle=feature.GetField('northangle')
    geom=feature.GetGeometryRef()
    geomlist.append(geom)
    roadlist2.append(roadid)
    dirlist.append(angle)
    feature.Destroy()
    feature=layer.GetNextFeature()

 

一开始一直没法问题,通过逐个语句删除再运行,首先确定了feature.Destroy()这一句会影响,但也不知道为什么,本人参考的代码段里面也是这样用的。

后面经过尝试,发现根本在于   geom=feature.GetGeometryRef(),一旦给geom赋值,feature一更新后小会就自动退出。但获取要素的几何是我需要的,又不能直接删除,因此接着去找关于GDAL库相关的介绍(注:这里osgeo是GDAL库里的内容)。

解决:最终找到了关于这块的的介绍,网址如下:

Python Gotchas in the GDAL and OGR Python Bindings — GDAL documentationicon-default.png?t=M276https://gdal.org/api/python_gotchas.html这里说下与本问题相关的三点,1)Destroy()可以不必使用。

 

2)GetGeometryRef()生成的是一个引用,而不是副本。这样一来,一旦我更新feature或是删除feature,就会导致geom出问题,程序退出!

3)说明为了什么发生错误还不报错,还提供解决方案。

 最后是我通过修改代码,绕开问题实现同样效果,如下:

from osgeo import ogr
………………
geomlist=[]
dirlist=[]
roadlist=[]
feature = layer.GetNextFeature()
while feature:

    roadid=feature.GetField('arcid')
    angle=feature.GetField('northangle')
    geom=feature.GetGeometryRef()
    geomlist.append(geom.ExportToWkt())
    roadlist2.append(roadid)
    dirlist.append(angle)
    del geom
    #feature.Destroy()
    feature=layer.GetNextFeature()

三、其他一些解决办法杂记

pycharm报错:Process finished with exit code -1073741819 (0xC0000005)_qiao1025566574的博客-CSDN博客这个错误是真的奇怪,网上说法居然各个都不一样,而我解决的方法也都和大家不一样。所以如果你遇到了这个问题,可以从以下几个方面找找原因,希望能帮到你。我觉得最有可能的是第六种,可以直接看第六种方法。。第一种:读取csv文件如果你读取了csv文件,请参考这个,否则直接跳过原地址:https://stackoverflow.com/questions/28447567/python-termi...https://blog.csdn.net/qiao1025566574/article/details/81037908

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值