程序结束后保持 matplotlib 图形打开

Keeping matplotlib figures open after program ends

是否有可能 运行 Python 代码生成一个(或多个)图形并保持这些图形打开,即使在程序结束后也是如此?

目前,当我在代码末尾使用 show() 时,程序执行 $ python somecode.py 会停止,直到我关闭图形(或图形)。从而使终端无法使用。

我是否需要为每个图形分配不同的作业 ID,以便这些图形 运行ning 与主程序分开?如果是这样,我怎样才能做到这一点?

当一个人想要使用不同的输入执行有限次数的程序,并且不想将每个结果图形存储为(单独的)文件时,这种需求就变得很明显。这对于进行快速比较很方便。

一个明显的解决方案是 运行 程序在单独的终端会话中。

不确定这是否是您想要的,但您当然可以使用 &.

在您的终端中将 python 作为后台进程启动

像这样:

$ python somecode.py &
$ ...         # control is returned here immediately

它将在后台启动 python 并立即 return 控制终端。一段时间后,情节 window 将出现而不会阻塞终端。您可以通过这种方式触发 python 的多个实例,从而导致多个 plot windows 同时打开,同时保持终端可用。

请注意,您也可以在进程启动后将其移至后台。之后

$ python somecode.py

终端已被阻止,但您可以在终端中按 ctrl-z,然后按 bg 将进程转为后台进程。

这当然是一般的 shell 功能,与 Python 无关。

要继续显示图像,python 必须仍然是 运行ning。如果 python 仍然是 运行ning,那么在标准用法中您将无法使用终端。

一般来说,对于这种类型的工作流程,您可能会使用 ipython,您可以在其中轻松 运行 所需的 program/code/script,然后继续使用交互式解释器。

替代解决方案包括:
- Moving the running process to the background
- Running the process in the background
- 运行 gnu screen.

中的进程