Эта печать с многопроцессорной обработкой в ​​Windows не работает должным образом.

но я начал углубляться в многопроцессорность, так как считаю, что мой код легко распараллелить. Однако, работая с учебниками, я столкнулся с проблемой: функции, распределяемые в пуле, похоже, не распечатываются.

Вот виновник:

__spec__ = None # This line is required for Spyder and not part of the actual example

from multiprocessing import Process
import os

def info(title):
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())

def f(name):
    info('function f')
    print('hello', name)

if __name__ == '__main__':
    info('main line')
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

Вывод, который я получаю, следующий:

main line 
module name: __main__ 
parent process: 10812 
process id: 11348*

Теперь ясно, что консоль, похоже, печатает только информационную функцию, но не выводит какую-либо функцию f (которая использует multiprocessing.Process). Я сталкивался с подобными проблемами с другими примерами, которые я нашел в Интернете: вычисления выполняются и возвращаются правильно при использовании многопроцессорной обработки, но отпечатки никогда не отображаются в консоли.

Кто-нибудь знает почему и как решить эту проблему?

На возможной связанной ноте я использую Python 3.6 в Spyder 3.2.4. Spyder, похоже, имеет несколько причуд, так как первая строка в коде уже является обходным путем, необходимым для того, чтобы многопроцессорная обработка вообще могла работать, проблема, которую я обнаружил, уже обсуждаласьВот, Подобная, нерешенная проблема была упомянутаВот.

Буду признателен за любую помощь и счастливого нового года для всех.

Ответы на вопрос(0)

Ваш ответ на вопрос