1

PPを使おうとすると複数の問題が発生しました。私はpython2.6とpp1.6.0rc3を実行しています。次のテストコードを使用します。

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

次の結果が得られます。

[10]の場合:スレッドrun_localの例外:
トレースバック(最後の最後の呼び出し):
  __bootstrap_innerのファイル"/usr/lib64/python2.6/threading.py"、525行目
    self.run()
  ファイル"/usr/lib64/python2.6/threading.py"、行477、実行中
    self .__ target(* self .__ args、** self .__ kwargs)
  ファイル"/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py"、751行目、_run_local
    job.finalize(sresult)
UnboundLocalError:割り当て前に参照されるローカル変数'sresult'

スレッドrun_localの例外:
トレースバック(最後の最後の呼び出し):
  __bootstrap_innerのファイル"/usr/lib64/python2.6/threading.py"、525行目
    self.run()
  ファイル"/usr/lib64/python2.6/threading.py"、行477、実行中
    self .__ target(* self .__ args、** self .__ kwargs)
  ファイル"/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py"、751行目、_run_local
    job.finalize(sresult)
UnboundLocalError:割り当て前に参照されるローカル変数'sresult'

スレッドrun_localの例外:
トレースバック(最後の最後の呼び出し):
  __bootstrap_innerのファイル"/usr/lib64/python2.6/threading.py"、525行目
    self.run()
  ファイル"/usr/lib64/python2.6/threading.py"、行477、実行中
    self .__ target(* self .__ args、** self .__ kwargs)
  ファイル"/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py"、751行目、_run_local
    job.finalize(sresult)
UnboundLocalError:割り当て前に参照されるローカル変数'sresult'

スレッドrun_localの例外:
トレースバック(最後の最後の呼び出し):
  __bootstrap_innerのファイル"/usr/lib64/python2.6/threading.py"、525行目
    self.run()
  ファイル"/usr/lib64/python2.6/threading.py"、行477、実行中
    self .__ target(* self .__ args、** self .__ kwargs)
  ファイル"/home/wkerzend/python_coala/lib/python2.6/site-packages/pp.py"、751行目、_run_local
    job.finalize(sresult)
UnboundLocalError:割り当て前に参照されるローカル変数'sresult'

どんな助けでも大歓迎です。

4

2 に答える 2

2

正しくフォーマットされていないためコードを読み取ることができませんが、正確な問題をお伝えできます。関数内から「sresult」という名前のグローバル変数を変更しようとしていますが、この行を先頭に追加していませんあなたの機能の:

global sresult

変数をグローバルとして宣言しない場合、関数内で変数を割り当てようとすると、Pythonはその変数が関数に対してローカルであると見なします。そのため、変数を変更またはアクセスしようとすると、Pythonはまだ「バインドされていない」と文句を言います。ローカル変数」(つまり、割り当てられているか、値が与えられている)。

于 2010-04-11T06:21:54.917 に答える
0

pp ライブラリのバグです。修正するか、修正されるまでお待ちください。

于 2011-12-22T10:12:16.543 に答える