Нет вывода на печать от дочерней многопроцессорной обработки. Процесс, если не происходит сбой программы - PullRequest
13 голосов
/ 15 декабря 2008

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

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

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

1 Ответ

23 голосов
/ 15 декабря 2008

Вы пробовали промывать стандартный вывод?

import sys
print "foo"
sys.stdout.flush()
...