Приветствую! Решил изучить Python. Подскажите, как правильно подписаться на событие изменение данных в процессе?
Попробовал нечто подобное:
import multiprocessing as mp
import logging
import time
def foo(q):
i = 1
while True:
q.put({'yndx': i})
time.sleep(1)
i += 1
if __name__ == '__main__':
mp.log_to_stderr().setLevel(logging.DEBUG)
mp.set_start_method('spawn')
q = mp.Queue()
p = mp.Process(target=foo, args=(q,))
p.start()
while True:
if not q.empty():
broadcast = q.get()
print(broadcast)
Но тут бесконечный цикл грузит проц до максимума, а когда их будет много... time.sleep в бесконечном цикле использовать не хочу, так как требуется моментальная доставка данных.
А в конечном итоге стоит задача, что один процесс получает данные, а другие процессы обработчики забирают то, что нужно им. При этом их количество меняется в течении жизни программы.