使用Matplotlib自动创建pdf会阻止代码执行

时间:2015-02-19 19:31:18

标签: python-2.7 matplotlib

我有一个Python代码,其中包含一个函数,其中创建一个图形以保存为pdf(它在执行期间从不在屏幕上显示)。由于某种原因,该子例程的执行使图形保持打开并阻止代码中的以下操作。我试图使用cla(),clf()和clear()函数,但我无法使它工作......

以下是子程序的局部视图:

def trace_pdf(a,b,c,d):
   x = np.linspace(0,100,a)
   fig2 = plt.figure()
   ax2 = fig2.add_subplot(111)
   ax2.plot(b,c,'b', label='BA',linewidth=3.5)
   ax2.set_title('a pdf like no other')     
   fig2.savefig('file.pdf', format='pdf')       
   fig2.clf()
   fig2.clear()

我不明白为什么我的代码被阻止了...(我检查过如果我对 trace_pdf 函数的调用发表评论,一切正常)。

1 个答案:

答案 0 :(得分:0)

所以这就是我为解决问题所做的工作。我决定尝试将我的函数作为一个独立的进程运行,所以我添加到我的代码中:

from multiprocessing import Process, Queue

def trace_pdf(a,b,c,d):
   x = np.linspace(0,100,a)
   fig2 = plt.figure()
   ax2 = fig2.add_subplot(111)
   ax2.plot(b,c,'b', label='BA',linewidth=3.5)
   ax2.set_title('a pdf like no other')     
   fig2.savefig('file.pdf', format='pdf')       
   plt.close()

trace_pdf = Process(target=trace_pdf, args=(a,b,c,d))
trace_pdf.start()

这样,plt_close()调用不会影响主图形界面,因为我认为它的操作仅限于单独的进程...有关将函数作为独立进程运行的详细信息,我使用{{3} }