Я пытаюсь запустить анимацию, в которой диаграмма рассеяния обновляется каждый временной интервал. Я работаю в блокноте Jupyter в vscode (если применимо). Сценарий анимации, приведенный ниже, отлично работает с первого раза, но при последующих запусках он выполняется не так, как предполагалось. Проблема устраняется только при перезапуске ядра. Моя работа требует от меня постоянного изменения этого кода анимации и, следовательно, необходимости запускать его несколько раз. Каждый раз перезапускать ядро затруднительно.
В следующем коде (отредактированном для выполнения исполняемого файла) я отображаю расположение объектов (
import numpy as np
import matplotlib
%matplotlib ipympl
%matplotlib widget
import matplotlib.pyplot as plt
from matplotlib import animation
# Toy example
timepoints = np.arange(0,1,0.02) # 100 frames
xs = np.arange(1,11)
ys = np.arange(1,11)
block_centroids = np.dstack(np.meshgrid(xs, ys)).reshape(-1, 2)
# (N, 2) initial location array for N = 100 objects
rand_amp = np.random.rand(100, 2)/10
fields = [rand_amp * np.sin(i/(20*np.pi)) for i in range(len(timepoints))]
# sinusoidal displacements for each object with random amplitudes
fig, axes = plt.subplots(figsize=(9,5), tight_layout = True)
scat = axes.scatter(xs, ys)
axes.set_aspect('equal', adjustable='box')
def update(val):
if val == len(timepoints) - 1:
print('closing!')
exit()
scat.set_offsets(block_centroids + fields[val])
fig.suptitle(fr'time $t = {timepoints[val]:.2f}$s')
fig.canvas.draw_idle()
return scat
def init():
pass
ani = animation.FuncAnimation(fig=fig, func=update, init_func=init, frames=len(timepoints), blit = True, interval=100)
После первого запуска этого блока кода повторный запуск либо зависает на каком-то промежутке времени (между 0 и 1), и преждевременно печатает 'closing!'
Strong>, или код продолжает выполняться вечно, без вывода данных и без ошибок, пока я не попытаюсь его остановить и время ожидания ядра не истечет.
Я пробовал несколько вещей, не совсем понимая, почему они могут работа. Я предполагаю, что объекты, связанные с анимацией, не сбрасываются, и каким-то образом функция update() вызывается с неправильным (старым) значением, и мои попытки в основном пытались закрыть/удалить старые экземпляры.
Я добавил оператор if внутри функции update(), чтобы попытаться закрыть анимацию после запуска. Ранее вместо функции exit() я использовал plt.close(fig), что приводило к зависанию анимации на полпути и выводу 'closing!'. > вывод повторяется.
Я пробовал добавить plt.cla(), plt.clf() и plt .close() в начале блока кода, чтобы закрыть все открытые экземпляры fig и axes, но это не помогло.
Я попытался удалить объекты fig и ani с помощью команды del, чтобы удалить их предыдущие экземпляры, в надежде начать заново при каждом запуске, но это не сработало. p>
Раньше даже при первых запусках анимации были проблемы. Я добавил бэкэнд Agg после прочтения ответа на stackoverflow, в котором рекомендовал GTKAgg для лучшей обработки анимации. Я не мог использовать GTKAgg, потому что у меня нет cairo, поэтому я остановился на самом близком варианте, и это помогло сделать первый запуск успешным.
Что здесь работает не так, как задумано? Что я могу попытаться отладить? Я пробовал печатать val при каждом вызове функции, чтобы проверить, что происходит во время повторов, но затем код продолжал работать без каких-либо выходных данных.
Я пытаюсь запустить анимацию, в которой диаграмма рассеяния обновляется каждый временной интервал. Я работаю в блокноте Jupyter в vscode (если применимо). Сценарий анимации, приведенный ниже, отлично работает с первого раза, но при последующих запусках он выполняется не так, как предполагалось. Проблема устраняется только при перезапуске ядра. Моя работа требует от меня постоянного изменения этого кода анимации и, следовательно, необходимости запускать его несколько раз. Каждый раз перезапускать ядро затруднительно. В следующем коде ([b]отредактированном для выполнения исполняемого файла[/b]) я отображаю расположение объектов ([code]block_centroids[/code]) с использованием диаграммы рассеяния и их обновления с использованием смещений в моменты времени[i] (задаваемые полями[i]). [code]import numpy as np import matplotlib %matplotlib ipympl %matplotlib widget import matplotlib.pyplot as plt from matplotlib import animation
rand_amp = np.random.rand(100, 2)/10 fields = [rand_amp * np.sin(i/(20*np.pi)) for i in range(len(timepoints))] # sinusoidal displacements for each object with random amplitudes
ani = animation.FuncAnimation(fig=fig, func=update, init_func=init, frames=len(timepoints), blit = True, interval=100) [/code] После первого запуска этого блока кода повторный запуск либо зависает на каком-то промежутке времени (между 0 и 1), и преждевременно печатает [b]'closing!' Strong>, или код продолжает выполняться вечно, без вывода данных и без ошибок, пока я не попытаюсь его остановить и время ожидания ядра не истечет. Я пробовал несколько вещей, не совсем понимая, почему они могут работа. Я предполагаю, что объекты, связанные с анимацией, не сбрасываются, и каким-то образом функция update() вызывается с неправильным (старым) значением, и мои попытки в основном пытались закрыть/удалить старые экземпляры. [list] [*]Я добавил оператор if внутри функции update(), чтобы попытаться закрыть анимацию после запуска. Ранее вместо функции exit() я использовал plt.close(fig), что приводило к зависанию анимации на полпути и выводу 'closing!'[/b]. > вывод повторяется.
[*]Я пробовал добавить plt.cla(), plt.clf() и plt .close() в начале блока кода, чтобы закрыть все открытые экземпляры fig и axes, но это не помогло.
[*] Я попытался удалить объекты fig и ani с помощью команды del, чтобы удалить их предыдущие экземпляры, в надежде начать заново при каждом запуске, но это не сработало. p>
Раньше даже при первых запусках анимации были проблемы. Я добавил бэкэнд Agg после прочтения ответа на stackoverflow, в котором рекомендовал GTKAgg для лучшей обработки анимации. Я не мог использовать GTKAgg, потому что у меня нет cairo, поэтому я остановился на самом близком варианте, и это помогло сделать первый запуск успешным.
[/list] Что здесь работает не так, как задумано? Что я могу попытаться отладить? Я пробовал печатать val при каждом вызове функции, чтобы проверить, что происходит во время повторов, но затем код продолжал работать без каких-либо выходных данных.
У меня есть вызов, который использует вызов Policy.Handle
(...).WaitAndRetry(...).ExecuteAsync(...) для завершения операции опроса.
Потратив большую часть получаса на чтение документации Polly, я не могу найти способ, с помощью которого этот вызов...
У меня есть вызов, который использует вызов Policy.Handle
(...).WaitAndRetry(...).ExecuteAsync(...) для завершения операции опроса.
Потратив большую часть получаса на чтение документации Polly, я не могу найти способ, с помощью которого этот вызов...
Когда я подключаюсь к удаленному серверу с помощью ноутбука с Ubuntu, scp зависает, команда экрана зависает, htop зависает, когда я набираю Pipenv, оболочка зависает. Однако, когда я использую свой ноутбук с Windows с теми же учетными данными, я...
Я пытаюсь создать API, который можно использовать для приглашения пользователей в мой пул пользователей Cognito.
Однако, когда я вызываю лямбду, она зависает...
Я безуспешно пытались увеличить лямбда-память до 512 МБ и время ожидания до 5 минут.
Это...
Я создал мобильное приложение с помощью Flutter. Это приложение требует больших объемов данных (API и фрагменты карты).
Оно всегда работает на Android, симуляторах iOS и Windows.
Но на физическом устройстве iOS (как в режиме выпуска, так и в режиме...