Эта печать с многопроцессорной обработкой в 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, похоже, имеет несколько причуд, так как первая строка в коде уже является обходным путем, необходимым для того, чтобы многопроцессорная обработка вообще могла работать, проблема, которую я обнаружил, уже обсуждаласьВот, Подобная, нерешенная проблема была упомянутаВот.
Буду признателен за любую помощь и счастливого нового года для всех.