Рабочий процесс выглядит следующим образом: боке запускается в скрипте 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']}
В настоящее время я обхожу это, добавляя дополнительный счетчик (
Код: Выделить всё
self.plot_counterНо, тем не менее, графики, похоже, накапливаются между 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
Мобильная версия