Нет выходных данных для печати из дочерней многопроцессорной обработки.Обрабатывайте, если программа не выйдет из строя

StackOverflow https://stackoverflow.com/questions/367053

Вопрос

У меня возникли проблемы с модулем многопроцессорной обработки Python.Я использую Process класс для запуска нового процесса, чтобы использовать мое второе ядро.Этот второй процесс загружает кучу данных в оперативную память, а затем терпеливо ждет, вместо того чтобы потреблять.

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

Мне интересно, есть ли простой способ отправить вывод дочернего процесса на печать первому процессу или заставить его создать оболочку / стандартный вывод, чтобы я мог его отладить.Я знаю, что мог бы создать multiprocessing.Queue предназначен для передачи отпечатков родительскому серверу, чтобы он мог распечатать их в стандартный вывод, но мне не хочется этого делать, если существует более простое решение.

Это было полезно?

Решение

Вы пробовали промывать stdout?

import sys
print "foo"
sys.stdout.flush()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top