Documentation on pyplot.show() reads:
matplotlib.pyplot.show(*args, **kw)Display a figure. When running in ipython with its pylab mode, display
all figures and return to the ipython prompt.In non-interactive mode, display all figures and block until the figures have been closed; in interactive mode it has no effect
unless figures were created prior to a change from non-interactive to
interactive mode (not recommended). In that case it displays the
figures but does not block.A single experimental keyword argument,
block, may be set toTrueorFalseto override the blocking behavior described above.
So the solution is this:
plt.show(block=False)
plt.pause(3)
plt.close()