Форум сайта python.su
# #!/usr/bin/env python #coding:utf-8 from PyQt4.Qt import * app = QApplication([]) view = QWebView() view.load(QUrl('http://localhost:8000')) view.move(0,0) view.resize(820,620) view.show() app.exec_()
Прикреплённый файлы:
scr.jpg (108,0 KБ)
Офлайн
Угу, ясно… Спасибо.
Офлайн
Снова вопросы…
Переписал программу на PIL, воспользовался примером, создал index.html с js скриптом, который показывает картинку, нарисованную на питоне с помощью PIL, перезагружая файл каждые 60 сек. Результат полностью удовлетворил, кроме скорости обновления изображения браузером. Ну и ладно.
Вопрос - а если в момент сохранения картинки из питона, веб браузер попытается открыть картинку, что получится?
Аналогично, если питоновская программа опрашивает датчики и записывает результаты в файл (файл открыт на добавление, чтобы велся бесконечный лог), а другая питоновская программа хочет открыть этот файл и нарисовать график в PIL, или js скрипт, рисует график по данным из этого файла, и происходит это одновременно - что будет?
Если файл будет кому-то недоступен, то как этого избежать?
Спасибо
Отредактировано Antarius (Дек. 12, 2016 20:47:30)
Офлайн
При открытии на чтение ошибки не будет. В общем случае упадет принимаюшая сторона по причине битых данных (недописанной картинки например).В вашем случае это маловероятно. Избегают этого применяя обмен через сокеты, или залочивая файл на время его записи (создать другой файл -индикатор не валидности первого и поллить систему на его отсутствие).
Поздравляю вы подошли к прелестям асинхронного программирования :)
Отредактировано doza_and (Дек. 13, 2016 06:31:35)
Офлайн
AntariusJS не нужен если передаешь картинку целиком, смысл в том чтобы передать данные - список (Y) и нарисовать браузером, покажи-ка код
создал index.html с js скриптом, который показывает картинку, нарисованную на питоне с помощью PIL
Antariusотследить изменение файла можно через tail -f
рисует график по данным из этого файла, и происходит это одновременно - что будет?
# #!/usr/bin/env python import subprocess pipe = subprocess.Popen(['tail','-1','-f','data.txt'],stdout=subprocess.PIPE) while True: line = pipe.stdout.readline() pipe.stdout.flush() if not line: break # тут чего-то делаешь с данными print 'pipe:' + line, print 'break'
Отредактировано vic57 (Дек. 13, 2016 23:33:57)
Офлайн
vic57Да, я оговорился, просто вставляется картинка в index.html. Без js. Но с автообновлением.
JS не нужен
Отредактировано Antarius (Дек. 14, 2016 13:27:43)
Офлайн
http://wiki.dieg.info/subprocess
http://john16blog.blogspot.ru/2010/10/python-subprocess.html
Отредактировано vic57 (Дек. 14, 2016 15:40:44)
Офлайн
vic57Скопипастил, не работает… разобраться не могу.
отследить изменение файла можно через tail -f
Офлайн
а файл data.txt есть?
в терминале запусти
cd www
tail -1 -f data.txt
cd www
echo 1 2 3 >> data.txt
Офлайн
Antariusя бы опрашивал все датчики в одном цикле и общий лог делал.
Хочу опрашивать несколько датчиков и складывать лог в разные файлы
Отредактировано vic57 (Дек. 14, 2016 17:31:33)
Офлайн