Нет выходных данных для печати из дочерней многопроцессорной обработки.Обрабатывайте, если программа не выйдет из строя
-
21-08-2019 - |
Вопрос
У меня возникли проблемы с модулем многопроцессорной обработки Python.Я использую Process
класс для запуска нового процесса, чтобы использовать мое второе ядро.Этот второй процесс загружает кучу данных в оперативную память, а затем терпеливо ждет, вместо того чтобы потреблять.
Я хотел посмотреть, что этот процесс напечатал с помощью print
команда, однако, я не вижу ничего, что она печатает.Я вижу только то, что печатает родительский процесс.Теперь это имеет смысл для меня, поскольку они живут в двух разных процессах.Второй процесс не создает свою собственную оболочку / стандартное окно вывода, и его выходные данные не отправляются родительскому процессу.Тем не менее, когда этот процесс завершается сбоем, он печатает все, что мой скрипт велел ему напечатать, плюс трассировку стека и ошибку.
Мне интересно, есть ли простой способ отправить вывод дочернего процесса на печать первому процессу или заставить его создать оболочку / стандартный вывод, чтобы я мог его отладить.Я знаю, что мог бы создать multiprocessing.Queue
предназначен для передачи отпечатков родительскому серверу, чтобы он мог распечатать их в стандартный вывод, но мне не хочется этого делать, если существует более простое решение.
Решение
Вы пробовали промывать stdout?
import sys
print "foo"
sys.stdout.flush()