2014-11-03 78 views
2

我创建了绘制Matplotlib图形的脚本(plot.py)。我希望脚本能够绘制图形,然后立即退出,但仍然保持图形打开状态。我知道我可以使用&在终端窗口中做到这一点:绘制一个图形并退出,但保持图形窗口打开

$ plot.py & 

,但我想,以避免每次输入的符号,并通过派生一个新的进程,而不是做到这一点,我想:

import matplotlib.pyplot as plt 
import numpy as np 
from multiprocessing import Process 
import multiprocessing 

def main(): 
    p = Process(target=showFigure) 
    p.start() 
    p.join() 

def showFigure(): 
    p = multiprocessing.current_process() 
    print ('Starting: {} {}'.format(p.name, p.pid)) 
    x = np.linspace(0, 2 * np.pi, 400) 
    y = np.sin(x) 
    plt.figure() 
    plt.plot(x, y) 
    plt.title('Simple test') 
    plt.show() 

if __name__ == '__main__': 
    main() 

但这不起作用。我还试图删除p.join()和使用daemon=True ..

+0

的进程拥有GUI对象,如果它退出时,窗户必须关闭。 – tacaswell 2014-11-03 13:47:08

回答

3

这里是解决方案,在Linux上工作:

import matplotlib.pyplot as plt 
import numpy as np 
import os 

def main(): 
    pid=os.fork() 
    if pid==0: 
     showFigure() 

def showFigure(): 
    x = np.linspace(0, 2 * np.pi, 400) 
    y = np.sin(x) 
    plt.figure() 
    plt.plot(x, y) 
    plt.title('Simple test') 
    plt.show() 

if __name__ == '__main__': 
    main()