Python matplotlib更新线程中的数据

Python matplotlib更新线程中的数据,python,multithreading,matplotlib,Python,Multithreading,Matplotlib,我是matplotlib的新手。 我想在另一个线程中的无限while循环中更新数据 除了在pyplot.show方法中更新绘图之外。 我尝试使用线程导入,但它不起作用 以及pyplot.show方法。 我知道我可以使用pyplot.ion,它可以很好地处理线程。 pyplot.ion的问题在于它效率低下。 有没有办法改用pyplot.show 我要说清楚,我不想要解决方案: pyplot.ion() .... while True: .... py

我是matplotlib的新手。 我想在另一个线程中的无限while循环中更新数据 除了在pyplot.show方法中更新绘图之外。 我尝试使用线程导入,但它不起作用 以及pyplot.show方法。 我知道我可以使用pyplot.ion,它可以很好地处理线程。 pyplot.ion的问题在于它效率低下。 有没有办法改用pyplot.show

我要说清楚,我不想要解决方案:

    pyplot.ion()
    ....
    while True:
    ....
        pyplot.show()

我不确定这是否解决了您的问题,但您可以尝试使用pyplot.draw而不是pyplot.show。如果您已经使用过show一次,它会更新绘图吗?draw应该会更新绘图

我不知道如何绘制数据,但假设每次绘制的数据集大小相同,加快速度的一个技巧是使用set_数据,如果第一次绘制时将线艺术家存储为

x, y = generate_data_function()
line, = pyplot.plot(x, y)
pyplot.show()

while True:
    x, y = generate_data_function()
    line.set_data(x, y)
    pyplot.draw()
希望有帮助!正如我所说,我不完全确定它是否真的解决了您的问题,但至少值得尝试。

我发现gobject.idle\u add和gobject.threads\u init非常有用。这几乎正是我所需要的。 我还发现这些资源很有用:

嗯,是的,这是可行的,但我已经知道这个解决方案,我知道我可以使用pyplot.ion,它可以很好地处理线程。但是我使用了pyplot.ion而不是pyplot.show。我认为pyplot.show不起作用,因为它将在该行停止。