2014-09-19 3 views
-1

Я пытался многопроцессорствовать с навесом (Windows 8). Я попробовал следующий пример: созданыPython Enthought Canopy: многопроцессорная обработка не работает

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

Что я делаю неправильно?

+0

Вы ничего не делаете неправильно, IDLE просто не обрабатывает вывод дочерних процессов должным образом. Если бы вы запускали скрипт непосредственно из командной строки, он работал бы так, как вы ожидаете. – dano

ответ

1

В оболочке python Canopy находится QtConsole IPython (не IDLE).

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

sys.stdout.flush() 
Смежные вопросы