python-3.x - Matplotlib 在 Ubuntu 18.04 上引发 MemoryError 但在 Windows 10 上没有
问题描述
我正在为 Windows 用户在我的 Ubuntu 机器上开发软件。
它的作用:对数千张图像进行对象检测,并将结果与一些测量数据进行比较(示波器数据:~200MB,5000 万个数据值)。最后绘制并保存结果。在这一步之后,程序前进到下一个数据集,依此类推。在第二个数据集中,我得到了错误。
我已经安装了 Ubuntu 和 Windows 10 64 位版本。Python3 64bit 应该在两个操作系统上运行。
要启动 python 脚本,您只需运行它,它会在一个大的 for 循环中完成所有工作。基本步骤:
- 检测数据集 1 图像上的对象
- 做一些计算
- 使用 matplotlib 绘制结果并保存到文件
- 前进到下一个数据集
- 检测数据集 2 图像上的对象
- 做一些计算
- 绘制结果 [MemoryError]
由于仅复制整个 ErrorMessage 最终会破坏其格式,因此我必须在每一行之后插入换行符以使其可读:
Progress: Datensatz 1/2 ; Sequenz 2/4 ; Frame 99/101
Progress: Datensatz 1/2 ; Sequenz 2/4 ; Frame 100/101
Progress: Datensatz 1/2 ; Sequenz 2/4 ; Frame 101/101
Progress: Plot...
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py", line 1496, in _getbool_axis
return self.obj._take(inds, axis=axis)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py", line 2789, in _take
verify=True)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/internals.py", line 4539, in take
axis=axis, allow_dups=True)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/internals.py", line 4421, in reindex_indexer
fill_tuple=(fill_value,))
File "/usr/local/lib/python3.6/dist-packages/pandas/core/internals.py", line 4501, in _slice_take_blocks_ax0
fill_tuple=None))
File "/usr/local/lib/python3.6/dist-packages/pandas/core/internals.py", line 1254, in take_nd
allow_fill=False)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/algorithms.py", line 1653, in take_nd
out = np.empty(out_shape, dtype=dtype, order='F')
MemoryError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/artur/Desktop/UHF_Analyse_Artur/Firefly_Gesamt/UHF_Analyse.py", line 794, in <module>
plot(gap_list, deg_list, timestamp, trc)
File "/home/artur/Desktop/UHF_Analyse_Artur/Firefly_Gesamt/UHF_Analyse.py", line 306, in plot
xticks = np.arange(df_oszi.index[0], df_oszi.index[-1], 1))
File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 2941, in __call__
sort_columns=sort_columns, **kwds)
File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 1977, in plot_frame
**kwds)
File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 1804, in _plot
plot_obj.generate()
File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 258, in generate
self._compute_plot_data()
File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 363, in _compute_plot_data
"timedelta"])
File "/usr/local/lib/python3.6/dist-packages/pandas/core/frame.py", line 3091, in select_dtypes
return self.loc[com._get_info_slice(self, dtype_indexer)]
File "/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py", line 1472, in __getitem__
return self._getitem_tuple(key)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py", line 890, in _getitem_tuple
retval = getattr(retval, self.name)._getitem_axis(key, axis=i)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py", line 1868, in _getitem_axis
return self._getbool_axis(key, axis=axis)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py", line 1498, in _getbool_axis
raise self._exception(detail)
KeyError: MemoryError()
>>> Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "/usr/lib/python3.6/tkinter/__init__.py", line 749, in callit
func(*args)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/backends/_backend_tk.py", line 346, in idle_draw
self.draw()
File "/usr/local/lib/python3.6/dist-packages/matplotlib/backends/backend_tkagg.py", line 9, in draw
super(FigureCanvasTkAgg, self).draw()
File "/usr/local/lib/python3.6/dist-packages/matplotlib/backends/backend_agg.py", line 402, in draw
self.figure.draw(self.renderer)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/figure.py", line 1649, in draw
renderer, self, artists, self.suppressComposite)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
a.draw(renderer)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/axes/_base.py", line 2610, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
a.draw(renderer)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/lines.py", line 736, in draw
self._transform_path(subslice)
File "/usr/local/lib/python3.6/dist-packages/matplotlib/lines.py", line 688, in _transform_path
_path = Path(np.asarray(xy).T,
File "/usr/local/lib/python3.6/dist-packages/numpy/core/numeric.py", line 492, in asarray
return array(a, dtype, copy=False, order=order)
MemoryError
有趣的是,我MemoryError
在 Ubuntu 上得到了,但在 Windows 上没有。我一直认为 python 在 Linux 上运行更可靠。知道如何解决这个问题吗?
解决方案
推荐阅读
- javascript - jQuery Magnify:为“data-magnify-src”添加相同的图像
- android - Android:Paging3:重复项目
- c# - 滚动期间面板背景不刷新(C#/VB.net)
- python - Pyside2中的2D可点击表面
- excel - Excel - VBA 网页抓取 - getElementsByTagName
- embedded - 很老的 CPU INTEL 8086 + 8087 嵌入式系统 Intel IC-86 编译器
- vba - 在 Powerpoint 中的图表中格式化所选系列
- flutter - 更喜欢使用 if null 运算符
- python - 如何创建/控制并行工作者?
- c# - 彩票中奖机会练习