をすることができますディスプレイを次のように取り外します。
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
import os
def detach_display():
mu, sigma = 0, 0.5
x = np.linspace(-3, 3, 100)
plt.plot(x, mlab.normpdf(x, mu, sigma))
plt.show()
if os.fork():
# Parent
pass
else:
# Child
detach_display()
メインプロセスは終了しますが、プロットは残ります。
試行#2。これはLinuxでも動作します。 、os._exit(0)
なければメイン処理ブロックをOS Xの
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
import os
import multiprocessing as mp
def detach_display():
mu, sigma = 0, 0.5
x = np.linspace(-3, 3, 100)
plt.plot(x, mlab.normpdf(x, mu, sigma))
plt.show()
proc = mp.Process(target=detach_display)
proc.start()
os._exit(0)
上ではなく:
あなたはそれを試してみるかもしれません。 Ctrl + Cを押すとメインプロセスは終了しますが、プロットはそのまま残ります。
os._exit(0)
では、メインプロセスは終了しますが、プロットはそのまま残ります。
試行#3。あなたが別のスクリプトであなたのmatplotlibの呼び出しを配置する場合は、このようにサブプロセスを使用することができます。
show.py:
import matplotlib.pyplot as plt
import numpy as np
import sys
filename = sys.argv[1]
data = np.load(filename)
plt.plot(data['x'], data['y'])
plt.show()
test.py
import subprocess
import numpy as np
import matplotlib.mlab as mlab
mu, sigma = 0, 0.5
x = np.linspace(-3, 3, 100000)
y = mlab.normpdf(x, mu, sigma)
filename = '/tmp/data.npz'
np.savez(filename, x=x, y=y)
proc = subprocess.Popen(['python', '/path/to/show.py', filename])
プロットを表示する必要がありtest.py
を実行すると、プロットを表示したまま端末に制御を戻します。
これは私には「プロセスが分岐してしまったため、このCoreFoundation機能を安全に使用できません。あなたはexec()をしなければなりません。 デバッグするには、__THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY ___ YOU_MUST_EXEC __()をブレークします。 ' – DilithiumMatrix
お詫び申し上げます。どうやらこのソリューションはLinux固有のものです。 – unutbu
お試しをよろしくお願いいたします。 – DilithiumMatrix