Вопрос

Моя проблема - это Гил, конечно. Пока я анализирую данные, было бы неплохо представить некоторые участки между между ними (так что это не слишком скучно ждать результатов)

Но GIL предотвращает это (и это приводит меня к тому, чтобы спрашивать себя, если бы Питона была такая хорошая идея в первую очередь).

Я могу отображать только сюжет, подождите, пока пользователь не закрывает его и начнут расчеты после этого. Пустая трата времени очевидно.

Я уже попробовал подпроцесс и многопроцессорные модули, но не сможете, чтобы они работали.

Любые мысли на этом? Спасибо

Редактировать: хорошо, так что это не Gil, но показать ().

Это было полезно?

Решение

Это не проблема от MatPlotlib или Gil.

В Matplotlib вы можете открыть как можно больше цифр, и у вас есть на экране, пока ваша приложение продолжает делать другие вещи.

Вы должны использовать MatPlotlib в интерактивном режиме. Это, вероятно, ваша проблема.

from matplotlib import interactive
interactive(True)

Это должно быть в верхней части вашего импорта

Другие советы

Это не имеет ничего общего с GIL, просто измените ваш код анализа, чтобы он время от времени обновлял график (например, каждый n итераций).

Только тогда, если вы увидите, что рисунок графа слишком сильно замедляет код анализа, поместите код обновления графа в подпроцесс с помощью многопроцессора.

Я думаю, вам понадобится поставить график в надлежащую систему наводвов, а не полагаться на встроенный шоу-код.

Может быть, придерживаясь .Show () в другом потоке будет достаточно?

GIL не имеет значения - у вас есть разблокировка () вызов, поэтому вам нужно справиться с этим первым.

Похоже, метод Draw () может обойти необходимость показать ().

Единственная причина, оставленная для .show () в скрипте, заключается в том, чтобы она выполняла блокирующей деталь, чтобы изображения не исчезали, когда скрипт достигает своего конца.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top