Боке: обратная связь от браузера после завершения рендеринга?Python

Программы на Python
Ответить
Anonymous
 Боке: обратная связь от браузера после завершения рендеринга?

Сообщение Anonymous »

В настоящее время я использую боке для отображения данных, сгенерированных из другого скрипта Python main.py.
Рабочий процесс выглядит следующим образом: боке запускается в скрипте gui.py и имеет около 9 отображает графики.
main.py генерирует данные, сохраняет их в файл file.dict, а затем отправляет команду udp в gui.py о том, что данные сохранены.< /p>
gui.py использует curdoc().add_ periodic_callback(self.udp_callback, 100) для проверки каждые 100 мс, была ли получена команда udp. Если это так, он считывает словарь, хранящийся в файле file.dict, и обновляет каждый из своих графиков, используя в основном

Код: Выделить всё

def process_data(self,data):
for ii in range(9):
for jj in range(4):
self.plot[ii][jj].data = {"x": data[key[ii]][jj]['x'], "y": data[key[ii]][jj]['y']}
Однако рендеринг идет медленно (у меня есть от 4 до 8 графиков на фигуру примерно по 200 точек каждый), и 100 мс кажутся слишком короткими. К сожалению, компьютер, на котором он работает, также не имеет графического процессора, поэтому я не могу использовать webGL.
В настоящее время я обхожу это, добавляя дополнительный счетчик (

Код: Выделить всё

self.plot_counter
), который увеличивается каждый раз, когда я получаю UDP-сообщение, и обновляю графики только примерно раз в 10.
Но, тем не менее, графики, похоже, накапливаются между gui.py и браузер. Если я оставлю его включенным некоторое время, даже после принудительного закрытия gui.py и main.py, браузер продолжит обновлять графики несколько раз, пока не решит, что все готово. Из вывода консоли gui.py я вижу, что он перестал запрашивать новые графики после остановки main.py.
Сначала я подумал, что, возможно, сообщения udp накапливаются, но я очищаю буфер после прочтения:

Код: Выделить всё

def udp_callback(self):
data_dict_recv=None
try:
txt_recv = self.server.recv()
if txt_recv == "new data stored":
with open("/tmp/file.dict","rb") as f:
data = pickle.load(f)
while self.server.recv():
asdf=1
except Exception as e:
print(e)
if data is not None:
self.process_data(data)
Есть ли способ получить от браузера скрипту обратную связь о том, завершен ли рендеринг? Я не хочу запрашивать новый рендеринг, пока предыдущий не будет завершен.

Подробнее здесь: https://stackoverflow.com/questions/791 ... g-complete
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»