2010-04-11 76 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

我不知道PP,但考虑到在库中发生异常,这可能是一个错误。只要您的代码符合API PP指定的任何内容。尝试升级或降级PP,看看会发生什么...... – 2010-04-11 06:40:55

回答

2

我无法读取您的代码,因为它的格式不正确,但我可以告诉您确切的问题:您试图从函数内部修改名为“sresult”的全局变量,但是您没有添加行到你的函数的开头:

global sresult

如果你不声明一个变量全局,Python会假定它是本地的功能,如果你试图在函数中分配的,所以当你尝试修改或访问它,Python会抱怨你还没有“绑定本地变量”(即分配给它或给它一个值)。

+0

嗯,是的,我知道这是问题。我的问题是关于parallel-python包中有一个问题,并且想知道是否有人找到了修复程序或知道该怎么做。 感谢您的回答。 Wolfgang – 2010-04-11 06:42:17

+0

感谢您的回答。我对这个问题感到困惑。 – Tshepang 2010-10-04 07:57:16

0

这是pp库中的一个bug。修复它,或等待它被修复。

相关问题