【问题标题】:python/matplotlib hangs randomly on on savefig()python/matplotlib 在 savefig() 上随机挂起
【发布时间】:2013-07-31 03:23:48
【问题描述】:

有时我的代码运行很快并退出(例如:需要 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

【问题讨论】:

  • 您是否尝试在远程磁盘上写入文件?或者您是否接近完整磁盘(df 可能存在于 OSX 上,不确定)?尝试写入不同的位置(最好是在不同的磁盘上)。
  • @Bonlenfum 它在我的本地磁盘上(有 400 GB 的可用空间),没有其他任何东西写入它。我应该尝试写入外部 HD 吗?
  • 你传递给 savefig() 的参数是什么?至少需要 2..
  • @mattyTpain 刚刚添加到我的帖子中
  • 奇怪.. 我经常在 os x 10.7.5 w/python 2.7.3 上使用 savefig,但从来没有在 savefig 上挂过。我在 python 启动的多个实例和 matplotlib 窗口从过去的实例中打开时遇到了挂起问题。我会检查它是否打开了多个窗口,并确保它不是 fig.get_dpi() 或两者的组合,例如尝试设置 dpi=100。

标签: python macos matplotlib freeze


【解决方案1】:

我在尝试保存 .pdf 文件时遇到了类似的 savefig 挂起问题。 当我尝试将其保存为 .png 时,它完成了。 虽然情节上的点数非常多...

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多