绘制图形后退出但保留窗口打开

2 投票
1 回答
536 浏览
提问于 2025-05-01 06:20

我写了一个脚本(plot.py),这个脚本可以画出一个Matplotlib图形。我希望这个脚本在画完图后能立刻退出,但图形窗口还保持打开状态。我知道在终端窗口里可以用&符号来实现这个:

$ 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

暂无标签

1 个回答

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()

撰写回答