2

次のようなpythonスクリプトがあります。

 if options.benchmark == 'perlbench':
     process = Mybench.perlbench
 elif options.benchmark == 'bzip2':
     process = Mybench.bzip2
 elif options.benchmark == 'gcc':
     process = Mybench.gcc
 ....
 np = 1
 ....
 for i in xrange(np):   
     ... 
     system.cpu[i].workload = process[i]

ただし、次のエラーが表示されます。

system.cpu[i].workload = process[i]

NameError: name 'process' is not defined

それを修正する方法について何か考えはありますか?私はpythonの専門家ではありません。

4

2 に答える 2

3

あなたが投稿したスニペットは、ここcmp.pyに投稿されたスクリプトからのもののようです(リンクは現在ダウンしています)。

-bこのスクリプトはコマンド ラインで実行されており、またはに有効な値を指定する必要があります--benchmark。指定していないか、無効なものを指定しています。

elseケースを追加してより有用なエラーを表示するようにスクリプトを変更することもできますが、適切な値を使用しない限り機能しません。

たとえば、これを試すことができます:

python cmp.py --benchmark perlbench
于 2011-07-23T11:15:43.623 に答える
3

つまり、あなたのブロックは

if options.benchmark == 'perlbench':
     process = Mybench.perlbench
elif options.benchmark == 'bzip2':
     process = Mybench.bzip2
elif options.benchmark == 'gcc':
     process = Mybench.gcc

いずれにも一致しなかったoptions.benchmarkため、変数processには何も割り当てられませんでした。あなたは投げる必要があります

else:
    process = Mybench.<somedefault>

その最後に(もちろん、必要に応じて記入し<somedefault>てください)。または、それが無効なケースである場合は、おそらく例外を発生させることができます。

于 2011-07-23T11:12:03.767 に答える