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

automated creation of pdf with Matplotlib blocks the code execution

我有一个 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 函数的调用,一切正常)。

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

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() 调用不会影响主图形界面,因为我相信它的操作仅限于单独的进程...有关 运行 将函数作为独立的详细信息我使用的过程 this post.