Как получить вывод из функции, вызываемой внутри apply_syn c in python2? - PullRequest
0 голосов
/ 07 апреля 2020

Используя ipyparallel и python2 Я запускаю ipcontroller и один ipengine (оба с --debug). В этом движке я запускаю код следующим образом:

import ipyparallel as ipp

def foo():
    import sys
    print("This is test 42")
    sys.stdout.flush()
    return 42

rc = ipp.Client()
rc[:].apply_sync(foo)

Я получаю ожидаемый вывод [42], но нигде не вижу вывод на печать

This is test 42

Где этот вывод? Как получить этот вывод?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете получить вывод, но это НЕ документировано надлежащим образом . Он хранится в некоторых метаданных, возвращаемых с результатами.

Вот что вам нужно сделать:

results = rc[:].apply_sync(foo)
for metadata in result.metadata:
    print(metadata['stdout'])
...