Недавно мы получали эту ошибку «Не удалось преобразовать глиф в растровое изображение» время от времени после того, как мы внедрили многопроцессное решение конвейера. То есть может быть несколько процессов, построение и сохранение рисунков одновременно. Мы удалили все отдельные функции fig.savefig (), вызываемые на верхнем уровне, и заставили использовать функцию util в каждом месте. Теперь ошибка восходит к последней функции fig.savefig () внутри утилиты, что было довольно плохо. Казалось, что чем сложнее фигура, чем больше процессов запущено одновременно, тем выше вероятность возникновения этой проблемы. Не уверен, что это проблема, связанная со шрифтами или проблема с библиотекой matplotlib. Типичное сообщение об ошибке выглядит следующим образом:
File "analysis/util.py", line 1041, in save_figures
fig.savefig(full_path, pad_inches=pad_inches, dpi=dpi)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/figure.py", line 2062, in savefig
self.canvas.print_figure(fname, **kwargs)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 2263, in print_figure
**kwargs)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 517, in print_png
FigureCanvasAgg.draw(self)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 437, in draw
self.figure.draw(self.renderer)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/figure.py", line 1493, in draw
renderer, self, artists, self.suppressComposite)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 2635, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/text.py", line 755, in draw
ismath=ismath, mtext=mtext)
File "/root/eureka1.0/local/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 212, in draw_text
font.draw_glyphs_to_bitmap(antialiased=rcParams['text.antialiased'])
RuntimeError: In draw_glyphs_to_bitmap: Could not convert glyph to bitmap
matplotlib