妨碍python实时绘图的最低性能

2024-06-26 03:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:

我正在运行一个遗传算法,并希望随着算法的发展,绘制每一代人的适应度。目前,我的代码是这样工作的:

# INITIALIZATION - PLEASE NOTE: INCOMPLETE EXAMPLE
fig = plt.figure(1)
ax1 = fig.add_subplot(1, 1, 1)
ax1.set_xlim([0, generations])
ax1.set_ylim([1000, 10000])
ax1.set_title('Creature fitness')
ax1.set_ylabel('Fitness')
ax1.set_xlabel('Generations')
xs = []
ys = []

line, = ax1.plot(xs, ys)

generation = 1
generations = 100

while generation < generations:

    # - some calculations here

    generation_fitness = x # from calculations above

    xs.append((generation))
    ys.append((generation_fitness))
    line.set_xdata(xs)
    line.set_ydata(ys)
    plt.pause(0.1)

然而,这会产生一个非常断断续续的图形,如:so
我认为这会减慢代码的执行速度

我想要一些类似于“风速”图的东西here,但希望不会太复杂


Tags: 代码编辑herelinefigpltgenerationfitness
1条回答
网友
1楼 · 发布于 2024-06-26 03:27:48

您的问题不是很具体,但对于这些类型的问题,通常情况下,您应该将应用程序的UI(图形)和逻辑分离到线程中,以便它们不会相互干扰

您应该启动一个单独的线程来渲染图形,并使用一些线程安全的构造将数据从逻辑线程传递到渲染线程。在这种情况下,您可能需要queue.Queue(谷歌it)

相关问题 更多 >