1

Basically what I want to do is draw a graph in real-time that updates/animates the data that is being shared across multiple processes. I have used Manager from the python multiprocessing module and shared a wave list (that is an array) that is updated/modified in another process in a while loop.

It seems that when I run the FuncAnimation function I can only update the data displayed according to local or global variables within the same process. Here is my code:

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

x = np.arange(0, 4408)
wave = np.arange(0, 4408)

def animate(i):
    plt.cla()
    global x
    x = [a + 4408 for a in x] # x-axis continues to shift

    plt.plot(x, wave)

# wave array from another process
def graph(shared_wave):
    global wave
    wave = shared_wave # Here it gets updated once but never again
    ani = FuncAnimation(plt.gcf(), animate, interval=100)
    plt.tight_layout()
    plt.show()

Any help would be greatly appreciated. One thing I have been thinking about is using multithreading in one process to run the animation in one thread and another thread to update a global variable.

deslay
  • 46
  • 5

0 Answers0