Наименьшая производительность, мешающая живому графику для Python - PullRequest
0 голосов
/ 01 мая 2019

Редактировать:

Я использую генетический алгоритм и хотел бы показать пригодность каждого поколения по мере его развития.На данный момент мой код работает следующим образом:

# 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
, и я думаю, что это замедляет выполнение кода.

Я хотел бы иметь что-то вроде графика «Скорость ветра» здесь , но, надеюсь, намного менее сложный.

1 Ответ

0 голосов
/ 01 мая 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...