Привет, парни и девушки, я действительно могу использовать вашу помощь или руководство по этой проблеме.
Учитывая, что у меня есть 3 сценария Python
script1.py
script2.py
script3.py
Мне нужно, чтобы скрипт script1.py отправил, скажем, строку 'True' наscript2.py.
Затем script2.py должен отправить строку в script3.py.
В то же время, script2.py должен проверить, будет ли скрипт script1.py отправлять ему строку «False».
Если это произойдет, script2.py должен прекратить отправку любых данных в script3.py
Я использую pyzmq, так как думаю, что он будет соответствовать моим потребностям.Я не хочу использовать Flask или socketsio.
Я смотрел на многопроцессорность и многопоточность, но я не уверен, стоит ли двигаться в этом направлении.Я пытался использовать циклы while для постоянной проверки значений, передаваемых из одного скрипта в другой, но это не очень хорошо работает.
Есть ли способ сделать это, используя только pyzmq, или я должен использовать что-то вроде многопроцессорной обработки?или действительно многопоточность?
Заранее спасибо
РЕДАКТИРОВАТЬ: Попытка дать лучшее объяснение.
Это script2.py.Он получает данные через порт 5555 из script1.py и публикует другие данные через порт 5556 в script3.py, выполняя функцию get ().В этот момент я думал, что data1 - это входные данные из script1.py.Я хочу проверять все время, если script1.py посылает мне сигнал прекратить публикацию данных в script3.py.
Есть ли способ сделать это с помощью pyzmq без параллельных вычислений?
#script2.py
from time import sleep
import random
import zmq
def get():
estimated = ()
on = ()
i = 0
while i<10:
now = random.uniform(10, 15)
estimated += (now,)
on += (0.85 * now,)
sleep(1)
i += 1
data_package = {'Estimated ': estimated, 'Actual': on}
return data_package
context = zmq.Context()
socket_1 = context.socket(zmq.SUB)
socket_1.setsockopt(zmq.SUBSCRIBE, b'status')
socket_1.connect("tcp://localhost:5555")
print('Connected to port 5555')
topic1 = socket1.recv_string()
data1 = socket1.recv_string() # may be a pyobj as well
socket2 = context.socket(zmq.PUB)
socket2.bind("tcp://*:5556")
print('Connected to port 5556')
while True:
socket_2.send_string('topic2', zmq.SNDMORE)
socket_2.send_pyobj(get())
print("dictionary sent")
Сейчас он просто бесконечно запускает цикл while.Помещение полученной строки в качестве условия на самом деле ничего не делает.