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()

близо до copypaste от примери, които намирате онлайн...

Процесите са създадени, но изглежда не правят нищо. Няма печат на "работещ".

Стартирам моя файл (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