Python: не печатать вывод функции в многопроцессорном режиме - PullRequest
0 голосов
/ 01 ноября 2019

Я хотел бы использовать многопроцессорность для своего кода, и я попробовал этот пример отсюда: https://pymotw.com/2/multiprocessing/basics.html

import multiprocessing

def worker(num):
    """thread worker function"""
    print('Worker:', num)
    return


if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,))
        jobs.append(p)
        p.start()

Однако, когда я запускаю код, он ничего не печатает. Буду признателен за помощь, чтобы выяснить, почему? и как это исправить?

Я использую Python 3 и Spider.

EDIT 1: Использование sys.stdout.flush () не помогает. Я пытался добавить его в рабочую функцию ...

def worker(num):
    """thread worker function"""
    print('Worker:', num)
    sys.stdout.flush()
    return

РЕДАКТИРОВАТЬ 2 Аналогично этому вопросу joblib. Параллельный запуск через зависание spyder на Windows .. ... но даже когда я попробовал предлагаемое решение, оно не сработало ...

enter image description here

EDIT 3

Действительно, без использования spyder это сработало:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...