2013-07-31 48 views
3

有時我的代碼很快運行並退出(例如:花費2秒鐘),有時會掛起(例如:最長分鐘)*。這種行爲似乎是完全隨機的。在所有地方添加打印語句之後,它似乎一直掛在savefig()上。關於爲什麼會發生這種情況的任何想法,如何進一步調查,或如何處理?python/matplotlib在savefig上隨機掛起()

當它停止時,Ctr-xCtr-c沒有效果。

當我殺死程序(使用Ctrl-\)時,它通常會說'Python在使用_macosx.so插件時意外退出'---我認爲這是一個matplotlib後端,所以也許這就是問題發生的地方?

謝謝。

*發生這種情況時,沒有其他程序/任務正在運行。傍晚觀看htop內存和CPU使用率都不高。

我在OS X上運行的Python 2.7.2 10.8.4

原理我的代碼:

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 
+0

您是否試圖在遠程磁盤上寫入文件?或者你接近完整磁盤(在OSX上可能存在'df',不確定)?嘗試寫入不同的位置(理想情況是在不同的磁盤上)。 – Bonlenfum

+0

@Bonlenfum它在我的本地磁盤上(有400 GB的可用空間),沒有其他任何寫入。我應該嘗試寫入外部HD嗎? – DilithiumMatrix

+0

你傳遞給savefig()的參數是什麼?它至少需要2 .. –

回答

0

我曾與savefig掛着羊頭保存.pdf文件時,類似的問題。 當我試圖將它保存爲一個.png它完成。雖然有很多點上的點...

我的推理是這樣的: 因爲.pdf(或其他矢量圖形類型)保存每一個點,savefig()試圖保存所有的點,似乎掛起。 但是,當保存爲名冊圖形(png,jpeg等)時,只保存圖形的視覺表示,即只保留再次顯示該圖像所需的確切屏幕像素數。

請注意,保存到名冊圖形會縮小圖像縮放時的質量。