Найти - Пользователи
Полная версия: Передача значений перемнной другой программе
Начало » Python для новичков » Передача значений перемнной другой программе
1 2
py.user.next
mabenqw
Внедрение в ее исходники должно быть минимальным, поэтому лучше это сделать с помощью child.py. К тому же child.py уже написана и отлажена. Всего лишь нужно передавать ей значение переменной.
А что мешает передать через файл на диске?
doza_and
py.user.next
А что мешает передать через файл на диске?
Я думаю что ничего не мешает. Есть множество способов. Просто это будет намного сложнее т.е. потребует на порядок больше текста.

Это индикатор выполнения. Надо отслеживать со стороны второй программы изменения файла. Простейший случай поллинг. Почем зря загрузите процессор и ос. Изменений может быть не видно, поскольку есть буферизация и в stdlib и в операционной системе :(. Где гарантия что когда вы читаете файл первый не изменил часть содержимого. Появляется второй файл для залочивания первого. и.т.п. и т.д.

Система с файлами почти сразу ПОЧТИ заработает. Но путь от ПОЧТИ заработает до заработает неблизок.

Это все уже много раз проходилось с разными людьми. Обычная история когда не очень грамотный потребитель данных открывает файл с исключительными правами. Передающая сторона вообще ломается.
Такие ошибки отлавливаются по нескольку лет и возникают в течении всей жизни продукта.

Т.с. на мой взгляд не привел достаточных аргументов для того чтобы отказаться от вызова функции.


code_ua
Задача в том чтоб была рекция на вывод от parent.py, автор просит не переделывать эту программу и причин может быть множество, как и решений данной задачи.

В данном случае он говорит что child.py должен прекращать работу после чтения необходимого значения, а так как программа одна и нам не нужно контроллировать синхронизацию значит и считывание файла подходит. child.py может запоминать положение последнего состояния offset, т.е. даже если parent.py записал во время чтения, то мы при следующем обращении считаем, конечно данные прийдется разделять хотя бы новой строкой.

Самое простое решение для такой задачи считаю через xargs, но автор никак не отреагировал
doza_and
code_ua
автор просит не переделывать эту программу
Это невозможно. Надо по крайней мере вставить код для вывода данных.

Посмотрите внимательнее:

mabenqw
Но есть child.py, которая умеет выводить данные на экран. parent обновляет значение переменной очень быстро (раз в 10мс, например), но чтобы сильно не грузить систему, пусть она отправляет новое значение child раз в 2 секунды,

Приведите код. Решение с xargs будет ничуть не проще вызова функции. А если потребуется синхронизация то будет намного сложнее. Автору нужно интеллектуальное Эхо. Без синхронизации не обойтись.

Если и делать передачу между процессами то shared mem или соккеты. Ну или zmq например.
code_ua
mabenqw
Программа parent.py довольно крупная и написана не мной. Выводить значения нужно не только в консоль, но и на текстовый дисплей.

как я понял, что текстовый дисплей - это какая-то небольшая отдельная железяка для вывода текстовой информации типа рекламы, а вывод на консоль я так понял что есть ))

Если я прав про вывод, то синхронизация здесь не нужна, можно обойтись и системными программами для фильтра значения и потом запуска комманды.
code_ua
Так рассуждаю, т.к. тема создана в “для новичков” и путать одно с другим здесь положено )

UPD
doza_and
Решение с xargs будет ничуть не проще вызова функции.
Это решение лучше, тем что не нужно будет править код в parent.py и решает все проблемы синхронизации.
doza_and
code_ua
не нужно будет править код в parent.py
Вы вообще читали что я написал?

Приведите пример как не править код parent.py если в ней не предусмотрен вывод данных в консоль.

Даже если допустимо править parent.py я буду считать что вы обосновали свое утверждение что xargs проще если ваш код вызова child.py и передачи ей данных например будет вдвое короче чем вызов функции.
code_ua
doza_and
Вы вообще читали что я написал?
Приведите пример как не править код parent.py если в ней не предусмотрен вывод данных в консоль.

А Вы читали мое сообщение? из цитаты mabenqw, я делаю вывод, что для него дисплей и консоль это разные способы отображения:

code_ua
mabenqw
Программа parent.py довольно крупная и написана не мной. Выводить значения нужно не только в консоль, но и на текстовый дисплей.

А значит на консоль, как я понимаю parent.py уже выводит, возможно я не прав, это может утвердить или опровергнуть только mabenqw
doza_and
code_ua
то может утвердить или опровергнуть только mabenqw
Согласен подождем. Пускай напишет что ему надо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB