2010-04-11 2 views
1

У меня было несколько проблем с попыткой использовать PP. Я запускаю python2.6 и pp 1.6.0 rc3. Используя следующий код теста:Локальная переменная 'sresult', на которую ссылаются перед присвоением

import pp 
nodes=('mosura02','mosura03','mosura04','mosura05','mosura06', 
     'mosura09','mosura10','mosura11','mosura12') 

def pptester(): 
     js=pp.Server(ppservers=nodes) 
     tmp=[] 
     for i in range(200): 
       tmp.append(js.submit(ppworktest,(),(),('os',))) 
     return tmp 

def ppworktest(): 
     return os.system("uname -a") 

дает мне следующий результат:

 
In [10]: Exception in thread run_local: 
Traceback (most recent call last): 
    File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner 
    self.run() 
    File "/usr/lib64/python2.6/threading.py", line 477, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local 
    job.finalize(sresult) 
UnboundLocalError: local variable 'sresult' referenced before assignment 

Exception in thread run_local: 
Traceback (most recent call last): 
    File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner 
    self.run() 
    File "/usr/lib64/python2.6/threading.py", line 477, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local 
    job.finalize(sresult) 
UnboundLocalError: local variable 'sresult' referenced before assignment 

Exception in thread run_local: 
Traceback (most recent call last): 
    File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner 
    self.run() 
    File "/usr/lib64/python2.6/threading.py", line 477, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local 
    job.finalize(sresult) 
UnboundLocalError: local variable 'sresult' referenced before assignment 

Exception in thread run_local: 
Traceback (most recent call last): 
    File "/usr/lib64/python2.6/threading.py", line 525, in __bootstrap_inner 
    self.run() 
    File "/usr/lib64/python2.6/threading.py", line 477, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py", line 751, in _run_local 
    job.finalize(sresult) 
UnboundLocalError: local variable 'sresult' referenced before assignment 

Любая помощь очень ценится.

+0

Я не знаю ПП, но, учитывая, что исключение происходит глубоко в библиотеке, это, вероятно, ошибка. Пока ваш код выше соответствует любому API PP PP. Попробуйте или измените PP и посмотрите, что произойдет, возможно ... –

ответ

2

Я не могу прочитать ваш код, потому что он не отформатирован должным образом, но я могу рассказать вам о вашей конкретной проблеме: вы пытаетесь изменить глобальную переменную с именем «sresult» внутри функции, но вы не добавили ее линия для начала вашей функции:

global sresult

Если вы не объявить переменную глобальной, Python будет считать, что это локальная функции, если вы попытаетесь назначить его в функции, поэтому при попытке изменить или получить доступ к нему, Python будет жаловаться, что вы еще не «привязали локальную переменную» (то есть присвоили ей или дали ей значение).

+0

Ну, да, я знаю, что это проблема. Вопрос в том, что в пакете parallel-python есть проблема, и задавался вопросом, нашел ли кто-нибудь исправление или знает, что с ним делать. Спасибо, что ответили. Wolfgang –

+0

Спасибо за ответ. Я был озадачен проблемой. – Tshepang

0

Это ошибка в библиотеке pp. Закрепите его или подождите, пока он не будет исправлен.

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