NameError: 名称 'process' 未定义 (python)

2 投票
2 回答
17010 浏览
提问于 2025-04-16 22:08

我有一个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不是很熟悉。

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>)。或者如果这是一个不合法的情况,你也可以抛出一个异常。

3

你发的这段代码看起来是来自于一个叫 cmp.py 的脚本,这个脚本可以在 这里 找到(不过现在链接好像不能用了)。

这个脚本是在命令行中运行的,需要你为 -b--benchmark 提供一个有效的值。也就是说,你要么没有提供这个值,要么提供了一个无效的值。

你可以通过添加一个 else 的情况来修改这个脚本,这样可以显示一个更有用的错误信息,但如果你不使用合适的值,它还是无法正常工作。

比如,你可以试试这样:

python cmp.py --benchmark perlbench

撰写回答