绘制图形后退出但保留窗口打开
我写了一个脚本(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()