Я хочу использовать vispy v0.5.3
с python3-pyqt4.qtopengl
привязками, чтобы ускорить мои анимированные сюжеты. Тем не менее, я создал минимальный пример, где я просто сдвигаю синусоидальную волну, и обе версии приводят к одной и той же большой нагрузке на мой процессор. Тем не менее, это на самом деле связано с графикой, а не с другими тупыми операциями. Любая идея, как использовать Vispy в данном примере, чтобы ускорить его?
Matplotlib:
import numpy as np
import time
import matplotlib
import matplotlib.pyplot as plt
# Plot the target square wave shape
x = np.linspace(0, 2*np.pi, num=1000, endpoint=False)
y = np.sin(x)
fig, ax = plt.subplots(1,1, figsize=(6,5), dpi=100)
ax.set_title("sine wave")
line, = ax.plot(x, y, c='k') # width 4
ax.set_xlabel("time (s)")
ax.set_ylabel("amplitude")
if __name__ == '__main__':
while True:
y = np.roll(y,1)
line.set_ydata(y)
fig.canvas.flush_events()
plt.show(block=False)
time.sleep(0.01)
vispy:
import numpy as np
import time
from vispy import plot as vp
from vispy import app as app
fig = vp.Fig(size=(600, 500), show=True)
# Plot the target square wave shape
x = np.linspace(0, 2*np.pi, num=1000, endpoint=False)
y = np.sin(x)
line = fig[0, 0].plot((x, y), width=4, color='k',
title='sine wave', xlabel='time (s)',
ylabel='amplitude')
labelgrid = fig[0, 0].view.add_grid(margin=10)
bottom_spacer = vp.Widget()
labelgrid.add_widget(bottom_spacer, row=1, col=0)
grid = vp.visuals.GridLines(color=(0, 0, 0, 0.5))
grid.set_gl_state('translucent')
fig[0, 0].view.add(grid)
if __name__ == '__main__':
while True:
y = np.roll(y,1)
line.set_data((x, y))
app.process_events()
time.sleep(0.01)