2010-04-11 3 views
1

J'ai eu plusieurs problèmes en essayant d'utiliser PP. Je cours python2.6 et pp 1.6.0 rc3. En utilisant le code de test suivant:La variable locale 'sresult' référencée avant l'affectation

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

me donne le résultat suivant:

 
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 

Toute aide est grandement appréciée.

+0

Je ne connais pas PP, mais étant donné que l'exception arrive en profondeur dans la bibliothèque, c'est probablement un bug. Tant que votre code ci-dessus est conforme à ce que l'API PP spécifie. Essayez-up ou downgrading PP et voir ce qui se passe peut-être ... –

Répondre

2

Je ne peux pas lire votre code parce qu'il n'est pas formaté correctement, mais je peux vous dire votre problème exact: vous essayez de modifier une variable globale nommée "sresult" depuis une fonction, mais vous ne l'avez pas ajoutée ligne au début de votre fonction:

global sresult

Si vous ne déclarez pas une variable globale, Python suppose qu'il est à la fonction locale si vous essayez de l'affecter au sein de la fonction, de sorte que lorsque vous essayez de modifier ou y accéder, Python se plaindra que vous n'avez pas encore "lié la variable locale" (c'est-à-dire, lui assigner ou lui donner une valeur).

+0

Eh bien, oui, je sais que c'est un problème. Ce que je voulais savoir, c'est qu'il y a un problème dans le paquet parallel-python et je me demandais si quelqu'un avait trouvé une solution ou savait quoi faire à ce sujet. Merci d'avoir répondu. Wolfgang –

+0

Merci pour la réponse. J'étais perplexe par le problème. – Tshepang

0

C'est un bug dans la bibliothèque pp. Corrigez-le ou attendez qu'il soit corrigé.

Questions connexes