OP matplotlib
parsellerin sökülmesini ister . Çoğu yanıt, bir python yorumlayıcısından komut yürütüldüğünü varsayar. Burada sunulan kullanım örneği, a'nın file.py
çalıştırıldığı bir terminalde (örn. Bash) kod test etme tercihimdir ve çizimlerin ortaya çıkmasını istiyorsunuz, ancak python betiğinin tamamlanmasını ve bir komut istemine geri dönmesini istiyorsunuz.
Bu tek başına dosya, multiprocessing
verileri çizmek için ayrı bir işlem başlatmak için kullanılır matplotlib
. Ana iş parçacığı bu yazıda os._exit(1)
belirtilen kullanılarak çıkar . Ana kuvvetleri çıkmaya zorlar, ancak çizim penceresi kapanana kadar alt süreci canlı ve duyarlı bırakır . Bu tamamen ayrı bir süreç.os._exit()
matplotlib
Bu yaklaşım biraz duyarlı bir komut istemi ile gelen şekil pencereleri ile bir Matlab geliştirme oturumu gibidir. Bu yaklaşımla, şekil penceresi işlemi ile tüm teması kaybettiniz, ancak geliştirme ve hata ayıklama için sorun değil. Pencereyi kapatın ve test etmeye devam edin.
multiprocessing
belki sadece daha uygun hale getiren sadece python kod yürütme için tasarlanmıştır subprocess
. multiprocessing
çapraz platformdur, bu nedenle Windows veya Mac'te çok az ayarlama yaparak veya hiç ayarlama yapmadan iyi çalışmalıdır. Temel işletim sistemini kontrol etmeye gerek yoktur. Bu linux, Ubuntu 18.04LTS üzerinde test edildi.
#!/usr/bin/python3
import time
import multiprocessing
import os
def plot_graph(data):
from matplotlib.pyplot import plot, draw, show
print("entered plot_graph()")
plot(data)
show() # this will block and remain a viable process as long as the figure window is open
print("exiting plot_graph() process")
if __name__ == "__main__":
print("starting __main__")
multiprocessing.Process(target=plot_graph, args=([1, 2, 3],)).start()
time.sleep(5)
print("exiting main")
os._exit(0) # this exits immediately with no cleanup or buffer flushing
Koşmak file.py
bir şekil penceresi getirir, sonra __main__
çıkar ancak multiprocessing
+ matplotlib
şekil penceresi, bağımsız bir işlem olduğu için yakınlaştırma, yatay kaydırma ve diğer düğmelerle yanıt verir.
Bash komut istemindeki işlemleri aşağıdakilerle kontrol edin:
ps ax|grep -v grep |grep file.py
ion()
sorunu çözer.