我遇到了一个 python 错误,我已经尝试解决好几天了。我的程序创建数字,保存并关闭它们,除了这个错误之外工作正常。通常它不会妨碍保存过程,但有时保存时图片会丢失下部。奇怪的是,这种情况只会在循环到达 savefig 方法时每秒钟发生一次,这是我的代码:
for num in np.arange(file_number):
plt.figure('abc' + str(num),figsize=(22,12),dpi=100)
#some plots are added to the figure
print 1
plt.savefig(os.path.join(savepath,filename),dpi=100)
print 2
plt.close()
print 3
我使用打印命令查看错误发生的位置。这是 spyder 的控制台输出:
Reading file1.file
1
2
3
Reading file2.file
1
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_qt4.py", line 151, in <lambda>
lambda: self.close_event())
File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1564, in close_event
self.callbacks.process(s, event)
RuntimeError: underlying C/C++ object has been deleted
2
3
Reading file3.file
1
2
3
Reading file4.file
1
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_qt4.py", line 151, in <lambda>
lambda: self.close_event())
File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1564, in close_event
self.callbacks.process(s, event)
RuntimeError: underlying C/C++ object has been deleted
2
3
据我了解,在保存图形时(每第二次)已经发生了错误,尽管如果我省略 close() 命令它工作正常。在这种情况下,我的 RAM 在大约 70 个文件后被填满,有时我需要评估数百个文件。这就是为什么我需要包含 close() 命令或类似的东西。如果您解决了这个问题(或改进了我的编程,我想我保存和关闭的方式可能被认为是丑陋的)请帮助我。