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

Python 程序结束后保持matplotlib图形打开,python,linux,matplotlib,workflow,Python,Linux,Matplotlib,Workflow,是否可以运行Python代码生成一个或多个图形并保持这些图形处于打开状态,即使在程序结束后也是如此 目前,当我在代码末尾使用show()时,程序执行$python somecode.py会停止,直到我关闭图形。从而使终端无法使用 我是否需要了解如何为每个图形分配不同的作业id,以便这些图形与主程序分开运行?如果是这样,我如何才能做到这一点 当一个人想要用不同的输入执行一个有限次数的程序,而不想将每个结果图形存储为一个(单独的)文件时,这种需求就变得明显了。这便于进行快速比较 一个明显的解决方案是

是否可以运行Python代码生成一个或多个图形并保持这些图形处于打开状态,即使在程序结束后也是如此

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

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

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


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

不确定它是否是您想要的,但您当然可以使用
&
在终端中启动
python
作为后台进程

像这样:

$ python somecode.py &
$ ...         # control is returned here immediately
它将在后台启动
python
,并立即将控制权返回到终端。一段时间后,打印窗口将出现,而不会阻塞终端。您可以通过这种方式触发多个
python
实例,从而在保持终端可用的同时打开多个打印窗口

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

$ python somecode.py
终端已被阻止,但您可以在终端中按
ctrl-z
,然后按
bg
,将进程转换为后台进程


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

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

一般来说,使用这种类型的工作流,您可以轻松地运行所需的程序/代码/脚本,然后继续使用交互式解释器

替代解决方案包括:
-
-

-在中运行进程。

如果您已经知道了显而易见的解决方案,为什么不使用它呢?打开另一个终端似乎太费劲了。必须有一个更简单的解决方案,对吗?打开另一个终端的一个问题是,每次要运行另一个模拟时都必须这样做。这只会造成混乱。除了打开来自不同模拟的多个图形外,您还可以添加多个端子。@cel,因为通常存在更好的解决方案@DilithiumMatrix,谢谢你给我指出这篇有趣的文章。当然!这正是我需要的。尽管我必须说,我这样做有一个缺点。我只想在程序完成执行后让这些数字存在。但是,由于我运行的程序(仍在后台)占用了大量内存。对于只显示一些数字-在我的例子中,每个python执行80MB。非常感谢您显示我可以处理这个问题的多种方法!即使使用IPython,使用
show()
也会暂停会话,直到图形关闭。@imranal您需要使用
show(block=False)
返回提示。毕竟,IPython似乎是首选。谢谢你的提示。