私は複数のプロットをオープンしようとしていますが、いくつかの問題がありました。私がスレッドを使ってプロットを作成しようとすると、まずPythonはいくつかのウィンドウを開き、最初のウィンドウ以外のウィンドウを閉じます。マルチプロセッシングshow matplotlibプロット
別の質問では、私が試したマルチプロセッシングを使用することをお勧めしました。コードはエラーなく実行され、プロットは表示されません。
私は、私のメインプロジェクトに移る前に、とても簡単なものを手に入れようとしています。
# Import the necessary packages and modules
import matplotlib.pyplot as plt
import numpy as np
#from threading import Thread
import multiprocessing
def plot(datax, datay, name):
# Prepare the data
x = datax
y = datay**2
# Plot the data
plt.scatter(x, y, label=name)
# Add a legend
plt.legend()
# Show the plot
plt.show()
#plot(3,3,)
'''
for i in range(10):
t = Thread(target=plot, args=(i,i+1,i,))
t.start()
'''
for i in range(2):
p = multiprocessing.Process(target=plot, args=(i, i, i))
p.start()
更新: 何らかの理由で、マルチプロセッシングは再び動作を停止。私は、プロセスを開くためにのみ関数multiP()を作成しようとしましたが、入力( 'value:')を追加しても機能しませんでした。私はこのようなデータを保存するつもりの特定のスレッドにデータを送信する方法を把握することはできません:dat = [[x、y0、y1、... yn]、[x、y0、y1、.. .yn]、...]と何かがdatに追加されたかどうかをチェックして各プロットプロセス。
import matplotlib.pyplot as plt
import numpy as np
import multiprocessing
#multiprocessing.freeze_support() # <- may be required on windows
def plot(datax, datay, name):
x = datax
y = datay**2
plt.scatter(x, y, label=name)
plt.legend()
plt.show()
def multiP():
if __name__ == "__main__":
for i in range(2):
p = multiprocessing.Process(target=plot, args=(i, i, i))
p.start()
if True:
#input('Vlaue: ') # while commented plots are shown
multiP()
マルチプロセッシングまたはスレッドを使用する目的は正確には何ですか? – ImportanceOfBeingErnest
まあ、基本的には、私がpyusb経由で得ているデータをプロットし、それをリアルタイムで複数のグラフにプロットできるようにする必要があります。 – user169808
ここで使用されているマルチプロセッシングは、リアルタイムプロットは、プロセスが開始されるとプロセスと通信する必要があるためです。 – ImportanceOfBeingErnest