Печать данных из параллельных процессов в многопроцессорном модуле Python

#python #python-3.x #parallel-processing #multiprocessing

#python #python-3.x #параллельная обработка #многопроцессорная обработка

Вопрос:

Я использую multiprocessing модуль в Python для создания 2 процессов, которые работают с одними и теми же оперативными данными и, как ожидается, будут выводить соответствующую отладочную информацию и результаты на консоль.

Как это можно сделать? AFAIK, только один из этих процессов использует консоль, используемую для выполнения программы, а другой процесс не может регистрировать свои выходные данные для печати на любой консоли.

 def fa():
    global live_data
    print(f'from fa {live_data}')

def fb():
    global live_data
    print(f'from fb {live_data}')

processes_list=[]
pa=Process(target=fa, args=())
pb=Process(target=fb, args=())
pa.start()
pb.start()
  

Я получаю только вывод одной из функций fa или fb на консоль.

Комментарии:

1. Вы могли бы использовать регистратор.

2. Не могли бы вы продемонстрировать это?

3. Я понял, что простое использование print работает для меня. Вы можете попробовать print("fa", flush=True)

4. Я понял, что проблема с тем, что программа не возвращает выходные данные, связана не с многопроцессорной обработкой, а с аппаратным обеспечением…. Я закрою это.

Ответ №1:

Если я прав, ваша проблема заключается в том, что переменные не могут быть просто разделены между процессами при многопроцессорной обработке. Вы могли бы, если это ваша проблема, решить ее, используя вместо этого функцию диспетчера из multiprocessing для передачи данных.

Комментарии:

1. Нет. Я хочу регистрировать / печатать переменные, созданные во время выполнения каждого процесса, и их выходные данные.

2. Хорошо, это мое недопонимание, тогда извините.