use*_*808 5 matplotlib multiprocessing python-3.x
我正在尝试打开多个图,但遇到了一些问题。当我尝试使用线程创建绘图时,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()
Run Code Online (Sandbox Code Playgroud)
更新:由于某种原因,多处理再次停止工作。我尝试创建一个函数 multiP() 只是为了打开进程,但当我添加输入('value:')时它不起作用。我不知道如何将数据发送到特定线程,我将像这样保存数据: dat = [[x,y0,y1,...yn],[x,y0,y1,.. .yn],...] 并且每个绘图过程都会检查是否添加了某些内容到数据中。
# 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()
Run Code Online (Sandbox Code Playgroud)
以下代码根据需要生成两个数字。
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()
Run Code Online (Sandbox Code Playgroud)