我有来自套接字的数据。 我想在开始时创建一个空图像,然后每次从套接字接收数据时更新此图像。 问题是当我收到大量数据(1024)并且我想要显示它时,需要时间并且挂起。是否有可能加快它的速度? 我认为我这样做的方式就是问题,所以如果有人知道更好的方法,请提出建议。
这就是我正在做的事情:
for i in range(0,99):
self.image_array[i] = np.zeros(shape=(y,x)) # y lines, x = points
#values are the received array
self.image_array[ch_id][line] = self.values from socket
ax1.imshow(self.image_array[ch_id],cmap='gray',interpolation='nearest',
origin='lower')
plt.draw()
plt.clf()
当我收到数据时,有可能不是替换数据,而是追加或者什么?
是否有更好的方法来初始化数组而不是np.zeros(...
答案 0 :(得分:1)
每次从套接字到达新数据时都不必创建新图像。您可以在初始化时创建单个图像,然后根据您收到的数据更新数组中的值:
# on initialisation
self.im = imshow(np.zeros((x,y)),cmap='gray',interpolation='nearest',
origin='lower')
...
# on update
self.im.set_data(self.values)
self.im.set_clim(self.values.min(),self.values.max())
self.im.figure.canvas.draw()