Python Enthought Canopy: многопроцессорность не работает

Я пробовал многопроцессорную обработку с помощью enthought canopy (Windows 8). Я попробовал следующий пример:

import multiprocessing

nProcesses=3

def worker():
   """worker function"""
    print "working"
    return

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

близко к копипасту примеров, которые вы найдете в Интернете...

Процессы создаются, но ничего не делают. Нет печати "работает".

Я запускаю свой файл (main.py) из среды, предоставленной Canopy (я думаю, IDLE), но я не копирую эти строки в интерпретаторе, я запускаю весь скрипт (например, %run "D:/path/main.py" )

Что я делаю не так?


person Zokalwe    schedule 19.09.2014    source источник
comment
Вы не делаете ничего плохого, IDLE просто не обрабатывает вывод дочерних процессов должным образом. Если бы вы запускали свой сценарий непосредственно из командной строки, он работал бы так, как вы ожидаете.   -  person dano    schedule 19.09.2014


Ответы (1)


Оболочка Python Canopy — это QtConsole IPython (не IDLE).

QtConsole отделяет вычисления от вывода на консоль (интерфейс). Чтобы убедиться, что текст печатается, когда вы хотите, вставьте это после вашего оператора печати:

sys.stdout.flush()
person Jonathan March    schedule 19.09.2014