Форум сайта python.su
0
К примеру есть программа parent.py, в которой есть цикл
while i < 5 i=i+1
Офлайн
0
в пределах одной программы лучше подойдут генераторы
если программы запускаются отдельно и сложные задачи, то лучше использовать Celery
смотря какие данные в задаче, для цикла можно и в файл(или на вывод) записывать значения одной программой, а другой забирать 
Офлайн
0
code_uaФайловый ввод-вывод не подходит, так как все должно происходить в реальном времени. Например, нужно отображать проценты какого-либо процесса.
в пределах одной программы лучше подойдут генераторыесли программы запускаются отдельно и сложные задачи, то лучше использовать Celeryсмотря какие данные в задаче, для цикла можно и в файл(или на вывод) записывать значения одной программой, а другой забирать
Отредактировано mabenqw (Май 30, 2016 22:06:29)
Офлайн
0
pipe для такой задачи тоже подойдет
Офлайн
253
mabenqwПонятие растяжимое. Это может быть обновление расписания раз в сутки ;)
так как все должно происходить в реальном времени
for i in range(5): print(i)
Отредактировано doza_and (Май 30, 2016 22:56:59)
Офлайн
0
Если конкретнее, то по определенным причинам parent.py не может выводить данные (проценты загрузки, например) на экран. Но есть child.py, которая умеет выводить данные на экран. parent обновляет значение переменной очень быстро (раз в 10мс, например), но чтобы сильно не грузить систему, пусть она отправляет новое значение child раз в 2 секунды, например. Когда значение переменной достигает определенного значения, child выводит сообщение об этом и завершает свою работу.
Как то так. parent.py и child.py это просто абстракция, чтобы выразить то, что требуется сделать.
Офлайн
0
В таком случае можно вызывать child.py каждый раз, когда parent.py возвращает значение, можно и без задержек
python parent.py | xargs -n 1 python child.py
#parent.py for i in range(5): print(i)
#child.py import sys print(sys.argv[1:])
Офлайн
253
mabenqwТак по каким причинам? От этого зависит решение. Делать передачу данных в между процедурами, между тредами между процессами или между компьютерами?
Если конкретнее, то по определенным причинам parent.py не может выводить данные
Офлайн
0
Программа parent.py довольно крупная и написана не мной. Выводить значения нужно не только в консоль, но и на текстовый дисплей. Чтобы это сделать, parent.py нужно довольно сильно переделать. Внедрение в ее исходники должно быть минимальным, поэтому лучше это сделать с помощью child.py. К тому же child.py уже написана и отлажена. Всего лишь нужно передавать ей значение переменной.
Офлайн
253
mabenqwВообще не проблема. Это почти всегда так.
parent.py довольно крупная и написана не мной.
mabenqwОбоснуйте. Помоему все переделки Это добавить в parant.py
Чтобы это сделать, parent.py нужно довольно сильно переделать.
from child import update_message .... if update_now: update_message("куку") ....
mabenqwЭто вы скажете когда все вместе заработает. А пока можно считать что ничего нет. Вам надо организовать совместный запуск, совместный останов, передачу данных между процессами, предусмотреть механизмы синхронизации сообщений. Задача совсем не для новичка. Pipe в большинстве случаев не подходит, поскольку обычно очень нетривиально буферизирован.
К тому же child.py уже написана и отлажена
Офлайн