Я запускаю генетический алгоритм и хотел бы построить график пригодности каждого поколения по мере продвижения алгоритма. На данный момент мой код работает так:
# 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)
Однако это приводит к очень заикающемуся графику, например: 
и я думаю, что это замедляет выполнение кода.
Я хотел бы иметь что-то вроде графика "Скорость ветра" здесь, но, надеюсь, намного проще.






Ваш вопрос не очень конкретен, но для таких типов проблем, как правило, вы должны разделить пользовательский интерфейс (график) и логику приложения на потоки, чтобы они не могли мешать друг другу.
Вы должны запустить отдельный поток для рендеринга графика и использовать некоторую поточно-безопасную конструкцию для передачи данных из логического потока в поток рендеринга. В этом случае вам, вероятно, понадобится queue.Queue (погуглите).