NameError: имя 'process' не определено (python) - PullRequest
1 голос
/ 23 июля 2011

У меня есть скрипт 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

Есть идеи, как это исправить?Я не эксперт по питону.

Ответы [ 2 ]

4 голосов
/ 23 июля 2011

Это означает, что ваш блок

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>). Или, если это неверный случай, вы можете вызвать исключение, возможно.

2 голосов
/ 23 июля 2011

Фрагмент, который вы опубликовали, похоже из сценария cmp.py, опубликованного здесь (ссылка в данный момент недоступна).

Этот скрипт запускается в командной строке и требует, чтобы для -b или --benchmark было указано правильное значение.Вы либо не указываете один, либо указываете недопустимый.

Сценарий можно изменить, добавив регистр else, чтобы отобразить более полезную ошибку, но он все равно не будет работать, если вы не используете соответствующийзначение.

Например, вы можете попробовать это:

python cmp.py --benchmark perlbench
...