pycharm错误发生在随机时间:进程以退出代码134结束(被信号6中断:SIGABRT)

qeeaahzv  于 2023-06-29  发布在  PyCharm
关注(0)|答案(2)|浏览(175)

我正在与pycharm社区合作使用keras后端的tensorflow模型,有时这个错误会在随机时间出现,特别是在我调用pyplot并关闭窗口之后:

Exception ignored in: <bound method Image.__del__ of <tkinter.PhotoImage object at 0x7ff6406fad30>>
Traceback (most recent call last):
  File "/usr/lib/python3.6/tkinter/__init__.py", line 3507, in __del__
    self.tk.call('image', 'delete', self.name)
    RuntimeError: main thread is not in main loop

在这个错误之后,我需要关闭python控制台并再次加载我的数据,这很耗时(数据是一个大数据集,内存使用量相当大)
如何解决此问题?
更新:这里是情节代码:

import matplotlib
matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
import numpy as np

data = np.ones((256,256))
fig = plt.figure()
ax = fig.add_subplot(111)
temp = np.transpose(data)
plt.title('title')
im = ax.imshow((temp), aspect='auto')
fig.colorbar(im)
plt.axes()

data2 = np.ones((256,256))
fig = plt.figure()
ax = fig.add_subplot(111)
temp = np.transpose(data2)
plt.title('title')
im = ax.imshow((temp), aspect='auto')
fig.colorbar(im)
plt.axes()

更新2:
PyCharm 2021.2.3(Community Edition)

build PC-212.5457.59
Runtime version: 11.0.12+7-b1504.40 amd64

我安装了以下软件包:

Package                 Version            
----------------------- -------------------
absl-py                 0.9.0              
appdirs                 1.4.3              
apturl                  0.5.2              
asn1crypto              0.24.0             
astor                   0.8.1              
bleach                  2.1.2              
Brlapi                  0.6.6              
certifi                 2018.1.18          
chardet                 3.0.4              
command-not-found       0.3                
control                 0.9.0              
cryptography            2.1.4              
cupshelpers             1.0                
cycler                  0.10.0             
decorator               4.4.2              
defer                   1.0.6              
distlib                 0.3.0              
distro-info             0.18ubuntu0.18.04.1
entrypoints             0.2.3.post1        
filelock                3.0.12             
gast                    0.2.2              
google-pasta            0.1.8              
graphviz                0.14               
grpcio                  1.27.2             
h5py                    2.10.0             
html5lib                0.999999999        
httplib2                0.9.2              
idna                    2.6                
imageio                 2.9.0              
imageio-ffmpeg          0.4.3              
imgviz                  1.2.5              
importlib-metadata      1.5.0              
importlib-resources     1.3.1              
ipykernel               4.8.2              
ipython                 5.5.0              
ipython-genutils        0.2.0              
ipywidgets              6.0.0              
Jinja2                  2.10               
joblib                  0.14.1             
jsonschema              2.6.0              
jupyter-client          5.2.2              
jupyter-core            4.4.0              
Keras                   2.4.3              
Keras-Applications      1.0.8              
Keras-Preprocessing     1.1.0              
keyring                 10.6.0             
keyrings.alt            3.0                
kiwisolver              1.1.0              
labelme                 4.5.7              
language-selector       0.1                
launchpadlib            1.10.6             
lazr.restfulclient      0.13.5             
lazr.uri                1.0.3              
llvmlite                0.34.0             
louis                   3.5.0              
macaroonbakery          1.1.3              
Markdown                3.2.1              
MarkupSafe              1.0                
matplotlib              3.0.3              
mistune                 0.8.3              
moviepy                 1.0.3              
nbconvert               5.3.1              
nbformat                4.4.0              
netifaces               0.10.4             
networkx                2.5.1              
notebook                5.2.2              
numba                   0.51.2             
numpy                   1.19.5             
oauth                   1.0.1              
olefile                 0.45.1             
opt-einsum              3.2.0              
pandas                  1.0.4              
pandocfilters           1.4.2              
pexpect                 4.2.1              
pickleshare             0.7.4              
Pillow                  5.1.0              
pip                     20.0.2             
proglog                 0.1.9              
prompt-toolkit          1.0.15             
protobuf                3.11.3             
pycairo                 1.16.2             
pycrypto                2.6.1              
pycups                  1.9.73             
pydot                   1.4.1              
pydot-ng                2.0.0              
pydotplus               2.0.2              
Pygments                2.2.0              
pygobject               3.26.1             
pymacaroons             0.13.0             
PyNaCl                  1.1.2              
pyparsing               2.4.6              
pyRFC3339               1.0                
python-apt              1.6.5+ubuntu0.5    
python-dateutil         2.6.1              
python-debian           0.1.32             
pytz                    2018.3             
PyWavelets              1.1.1              
pyxdg                   0.25               
PyYAML                  3.12               
pyzmq                   16.0.2             
QtPy                    1.9.0              
reportlab               3.4.0              
requests                2.18.4             
requests-unixsocket     0.1.5              
scikit-image            0.17.2             
scikit-learn            0.22.2.post1       
scipy                   1.4.1              
screen-resolution-extra 0.0.0              
seaborn                 0.11.0             
SecretStorage           2.3.1              
setuptools              46.0.0             
simplegeneric           0.8.1              
simplejson              3.13.2             
six                     1.14.0             
sklearn                 0.0                
system-service          0.3                
systemd-python          234                
tensorboard             1.14.0             
tensorflow-estimator    1.14.0             
tensorflow-gpu          1.14.0             
termcolor               1.1.0              
terminado               0.7                
testpath                0.3.1              
tifffile                2020.9.3           
tornado                 4.5.3              
tqdm                    4.56.2             
traitlets               4.3.2              
ubuntu-drivers-common   0.0.0              
ufw                     0.36               
unattended-upgrades     0.1                
urllib3                 1.22               
virtualenv              20.0.10            
wadllib                 1.3.2              
wcwidth                 0.1.7              
webencodings            0.5                
Werkzeug                1.0.0              
wheel                   0.34.2             
wrapt                   1.12.1             
xkit                    0.0.0              
zipp                    3.1.0              
zope.interface          4.3.2
i86rm4rw

i86rm4rw1#

看起来这是PyCharm中Tkinter主动跟踪问题的一部分。您可以在Pycharm's developer's issue tracker上找到参考。该问题尚未诊断,但如果查看similar problems with Tk on StackOverflow,可以看到它是线程安全和/或多线程的问题。
我所能做的就是推测原因,这是没有帮助的,但是,我至少可以整理建议的解决方法:
1.切换到不同的Matplotlib后端(参见文档:What is a backend?)。例如Qt 5,但您需要确保它们在您的环境中可用。
这种方法是最有前途的,因为其他后端能够更好地处理不是主线程的情况,或者对于多线程是显式安全的。这也是最简单的,除非您有非常具体的原因更喜欢TkAgg。
1.不要将调试器用于交互式绘图。
1.在Debugger中将“Variables Loading Policy”设置为“Synchronously”,这是一个PyCharm开发人员在链接问题中建议的。
1.在Pycharm中启用“科学模式”。
1.更深奥的解决方法,例如在绘制第二个图形之前关闭代码中的图形。例如,在绘制第一个图形之后:

# Save out figure if desired, then close
   # Assuming not using a blocking draw/show call.
   fig.savefig('myfig.png')
   plt.close() #  Object oriented: fig.close()

根据对原因的推测,也许PyCharm的调试器正在将Tk从主线程中踢出,或者在图形仍然处于活动状态或呈现时关闭的工作线程中运行它。
最后,请查看Matplotlib的相关文档,因为您的代码示例没有遵循他们推荐的使用模式。具体来说,从链接中了解面向对象和pyplot方法之间的差异。有可能,有点不太可能,如果代码坚持使用Matplotlib的推荐方法,如教程文档中突出显示的那样,错误可能不会出现。这只是推测。
我至少建议不要滥用plt.axes()作为强制渲染图形的迂回方法。您已经使用面向对象的方法fig.add_subplot创建了一个轴,因此不需要使用pyplot创建空轴。回想一下,图形可能会占用大量内存,因此,如果您已经因为加载数据集而导致内存不足,您可能会发现更好的性能,并通过正确处理图形来避免使用交换,例如在完成时关闭它们,除非需要,否则不以交互方式呈现它们等。

ffx8fchx

ffx8fchx2#

我也有同样的问题,这种情况间歇性地发生。我想我会分享我在我的例子中发现的东西。我正在Mac上运行我的代码,我在触摸栏上撞到了停止图标。

相关问题