在分配之前引用的局部变量'sresult'
我尝试使用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
任何帮助是极大的赞赏。
我无法读取您的代码,因为它的格式不正确,但我可以告诉您确切的问题:您试图从函数内部修改名为“sresult”的全局变量,但是您没有添加行到你的函数的开头:
global sresult
如果你不声明一个变量全局,Python会假定它是本地的功能,如果你试图在函数中分配的,所以当你尝试修改或访问它,Python会抱怨你还没有“绑定本地变量”(即分配给它或给它一个值)。
嗯,是的,我知道这是问题。我的问题是关于parallel-python包中有一个问题,并且想知道是否有人找到了修复程序或知道该怎么做。 感谢您的回答。 Wolfgang – 2010-04-11 06:42:17
感谢您的回答。我对这个问题感到困惑。 – Tshepang 2010-10-04 07:57:16
这是pp库中的一个bug。修复它,或等待它被修复。
我不知道PP,但考虑到在库中发生异常,这可能是一个错误。只要您的代码符合API PP指定的任何内容。尝试升级或降级PP,看看会发生什么...... – 2010-04-11 06:40:55