Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2016 14:22:01

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

 #
#!/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_()


Прикреплённый файлы:
attachment scr.jpg (108,0 KБ)

Офлайн

#2 Дек. 6, 2016 14:42:43

Antarius
Зарегистрирован: 2016-11-28
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

Угу, ясно… Спасибо.

Офлайн

#3 Дек. 12, 2016 20:45:49

Antarius
Зарегистрирован: 2016-11-28
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

Снова вопросы…
Переписал программу на PIL, воспользовался примером, создал index.html с js скриптом, который показывает картинку, нарисованную на питоне с помощью PIL, перезагружая файл каждые 60 сек. Результат полностью удовлетворил, кроме скорости обновления изображения браузером. Ну и ладно.

Вопрос - а если в момент сохранения картинки из питона, веб браузер попытается открыть картинку, что получится?

Аналогично, если питоновская программа опрашивает датчики и записывает результаты в файл (файл открыт на добавление, чтобы велся бесконечный лог), а другая питоновская программа хочет открыть этот файл и нарисовать график в PIL, или js скрипт, рисует график по данным из этого файла, и происходит это одновременно - что будет?
Если файл будет кому-то недоступен, то как этого избежать?
Спасибо

Отредактировано Antarius (Дек. 12, 2016 20:47:30)

Офлайн

#4 Дек. 13, 2016 06:29:50

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

При открытии на чтение ошибки не будет. В общем случае упадет принимаюшая сторона по причине битых данных (недописанной картинки например).В вашем случае это маловероятно. Избегают этого применяя обмен через сокеты, или залочивая файл на время его записи (создать другой файл -индикатор не валидности первого и поллить систему на его отсутствие).

Поздравляю вы подошли к прелестям асинхронного программирования :)



Отредактировано doza_and (Дек. 13, 2016 06:31:35)

Офлайн

#5 Дек. 13, 2016 23:15:57

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

Antarius
создал index.html с js скриптом, который показывает картинку, нарисованную на питоне с помощью PIL
JS не нужен если передаешь картинку целиком, смысл в том чтобы передать данные - список (Y) и нарисовать браузером, покажи-ка код
Antarius
рисует график по данным из этого файла, и происходит это одновременно - что будет?
отследить изменение файла можно через tail -f
допустим какой-то процесс дописывает строку в data.txt
 #
#!/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)

Офлайн

#6 Дек. 14, 2016 13:27:26

Antarius
Зарегистрирован: 2016-11-28
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

vic57
JS не нужен
Да, я оговорился, просто вставляется картинка в index.html. Без js. Но с автообновлением.
Можете объяснить что тут делается:
line = pipe.stdout.readline()
pipe.stdout.flush()

А можно отслеживать изменения нескольких файлов в одной программе? Хочу опрашивать несколько датчиков и складывать лог в разные файлы. Затем отдельной программой отслеживать измнения и рисовать картинки с графиками. Или отдельная программа для отдельного файла?

Спасибо.

Отредактировано Antarius (Дек. 14, 2016 13:27:43)

Офлайн

#7 Дек. 14, 2016 15:39:47

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

http://wiki.dieg.info/subprocess
http://john16blog.blogspot.ru/2010/10/python-subprocess.html

Отредактировано vic57 (Дек. 14, 2016 15:40:44)

Офлайн

#8 Дек. 14, 2016 16:18:50

Antarius
Зарегистрирован: 2016-11-28
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

vic57
отследить изменение файла можно через tail -f
Скопипастил, не работает… разобраться не могу.
Сразу ‘break’.

Офлайн

#9 Дек. 14, 2016 17:03:10

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

а файл data.txt есть?
в терминале запусти

cd www
tail -1 -f data.txt
и в другом теминале
cd www
echo 1 2 3 >> data.txt

Офлайн

#10 Дек. 14, 2016 17:13:28

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Начинает тормозить TKinter

Antarius
Хочу опрашивать несколько датчиков и складывать лог в разные файлы
я бы опрашивал все датчики в одном цикле и общий лог делал.
ЗЫ там же можно и картинку рисовать
если ты делаешь метеостанцию - решений полно в инете
http://www.avislab.com/blog/raspberry-pi-meteo_ru/
первое из найденных

Отредактировано vic57 (Дек. 14, 2016 17:31:33)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version