从子进程中分离matplotlib窗口

l0b*_*0b0 5 python matplotlib

我有一个脚本,它创建了一个图表,但直到窗口关闭脚本一直在后台运行.我希望它一旦创建窗口就退出,这样shell中的Ctrl-C就不会杀死窗口,这样用户可以打开窗口并继续在shell中工作而不用bg它手动.我已经看过一些带守护进程的解决方案,但我想避免将其拆分为两个脚本.是多进程的最简单的方法,或者是有什么短?

相关show()命令是脚本执行的最后一项操作,因此我不需要以任何方式保持对窗口的引用.

编辑:我不想将图形保存为文件,我希望能够使用交互式窗口.基本上与mian ... &在bash中运行相同

bla*_*kbk 5

刚刚在 plt.show() 中发现了这个论点。设置 block=False 将弹出图形窗口,继续执行以下代码,并在脚本完成后将您保留在解释器中(如果您在交互模式下运行 -i)。

plt.show(block=False)
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 3

这适用于 Unix:

import pylab
import numpy as np
import multiprocessing as mp
import os

def display():
    os.setsid()
    pylab.show()

mu, sigma = 2, 0.5
v = np.random.normal(mu,sigma,10000)
(n, bins) = np.histogram(v, bins=50, normed=True)
pylab.plot(bins[:-1], n)
p=mp.Process(target=display)
p.start()
Run Code Online (Sandbox Code Playgroud)

当您(从终端)运行此脚本时,将显示 pylab 图。按 Ctrl-C 会终止主脚本,但情节仍然存在。