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

这意味着你的块

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 回答
3

您发布的片段似乎来自此处cmp.py发布的脚本(链接当前已关闭)。

此脚本在命令行上运行,需要为-bor指定有效值--benchmark。您要么没有指定一个,要么指定了一个无效的。

可以通过添加else案例来修改脚本以显示更有用的错误,但除非您使用适当的值,否则它仍然无法工作。

例如,你可以试试这个:

python cmp.py --benchmark perlbench
于 2011-07-23T11:15:43.623 回答