我创建了一个脚本(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
..
答案 0 :(得分: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()