2016-01-17 3 views
0

Я пытаюсь использовать joblib пакета параллельных вычислений в python. Я могу привести следующий пример и получить результатPython: joblib не работает с настраиваемой функцией

Parallel(n_jobs=8)(delayed(sqrt)(i) for i in range(10)) 

Однако, следующий код не работает.

from joblib import Parallel, delayed 
def f(x): 
    return 1 
def y(x): 
    result=Parallel(n_jobs=8)(delayed(x)(i) for i in range(10)) 
    return result 
if __name__ == '__main__': 
    print y(f) 

Когда я запускаю вышеуказанный код, он продолжает работать вечно, не генерируя никаких результатов или сообщений.

Может ли кто-нибудь выяснить причину этого странного поведения (я использую окна)? спасибо

+0

Я могу выполнить оба ваших утверждения успешно, разместив их внутри блока 'if __name__ == '__main __'' – gtlambert

+0

@ lambo477, но не для меня, я пересмотрел свой пост. –

+0

ваш код отлично работает в моей среде Windows, Python '2.7.9' – gtlambert

ответ

0

Когда я пробую ваш код, он всегда работает для меня тоже.

Я не совсем уверен, но я думаю, что проблема в «замедленной (х)»

Если я пытаюсь это:

if __name__ == '__main__': 
    def f(x): 
     return 1 
    def y(x): 
     result=Parallel(n_jobs=8)(delayed(sqrt)(i) for i in range(10)) 
     return result 
    print(y(5)) 

он работает как шарм.

Похоже, что ваш код выдает сообщение об ошибке, но поскольку ошибка внутри части parrellel, как-то она не будет отображаться.

Смежные вопросы