python/matplotlib在savefig()上随机挂起



有时我的代码会快速运行并退出(例如:耗时2秒),有时它会挂起(例如:长达几分钟)*。这种行为似乎是完全随机的。在到处添加打印语句后,它似乎一直挂在savefig()上。关于为什么会发生这种情况,如何进一步调查,或者该怎么办,有什么想法吗?

当它停滞时,Ctr-x Ctr-c没有任何作用。

当我终止程序(使用Ctrl-)时,它通常会说"Python在使用_macosx.so插件时意外退出"——我认为这是matplotlib后端,所以可能这就是问题发生的地方?

谢谢。

*这种情况在没有运行其他程序/任务的情况下发生。晚上看htop,内存和cpu使用率都不高。

我在OS X 10.8.4 上运行Python 2.7.2

我的代码示意图:

from   matplotlib      import pyplot     as plt
fig = plt.figure(figsize=fig_size)
fig.subplots_adjust(left=subplot_position[0], right=subplot_position[1])
ax1 = fig.add_subplot(111)
# Do lots of stuff ....
fig_name = GetFigureName(fig_num, figure_output_filename)   # some string
fig.savefig(fig_name, dpi=resolution_factor*fig.get_dpi())  # resolution_factor ~ 1.0

我在尝试保存.pdf文件时遇到了类似的savefig挂起问题当我试图将其保存为.png时,它已完成不过,这张图上的点数太多了。。。

我的理由是:因为.pdf(或其他矢量图形类型)保存每个点,所以savefig()试图保存所有点,但似乎挂起了。然而,当保存为花名册图形(png、jpeg等)时,仅保存图形的视觉表示,即仅保存再次显示此图像所需的屏幕像素的确切数量。

请注意,在缩放图像时,保存到花名册图形可能会降低图像的质量。

最新更新