我试图打开多个地块,但遇到了一些问题。当我尝试使用线程创建绘图时,python 会首先打开多个窗口,然后关闭除第一个之外的所有窗口。
在另一个问题中,建议我使用我尝试过的多处理。代码运行没有错误,只是没有显示任何情节。
在继续我的主要项目之前,我试图让一些非常简单的事情工作。
# 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() 仅用于打开进程,但是当我添加 input('value: ') 时它不起作用。 scine 我不知道如何将数据发送到特定线程我要保存这样的数据: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()
最佳答案
以下代码根据需要生成两个数字。
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():
for i in range(2):
p = multiprocessing.Process(target=plot, args=(i, i, i))
p.start()
if __name__ == "__main__":
input('Value: ')
multiP()
关于python-3.x - 多处理显示 matplotlib 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571924/