Главная /
Язык программирования Python /
Какая ошибка допущена в следующем примере? import threading global to_eval cond = threading.Condition() def evaluate_something(x): return 2**int(x) def evaluator(name): global to_eval while True: cond.acquire() while not to_eval: cond.wait() v = to_eval.p
Какая ошибка допущена в следующем примере?
import threading
global to_eval
cond = threading.Condition()
def evaluate_something(x):
return 2**int(x)
def evaluator(name):
global to_eval
while True:
cond.acquire()
while not to_eval:
cond.wait()
v = to_eval.pop()
cond.release()
print name, ":", evaluate_something(v)
to_eval = []
for n in range(3):
ev = threading.Thread(target=evaluator, args=(str(n),))
ev.setDaemon(1)
ev.start()
while 1:
inp = raw_input('Вводите: ')
to_eval.append(inp)
cond.notifyAll()
вопрос
Правильный ответ:
cond.acquire()
должен стоять перед to_eval.pop()
в цикле
while 1
требуются cond.acquire()
и cond.release()
не обрабатываются исключения в потоках
ошибок нет
Сложность вопроса
87
Сложность курса: Язык программирования Python
62
Оценить вопрос
Комментарии:
Аноним
Если бы не эти решения - я бы сломался c этими тестами intuit.
23 ноя 2016
Другие ответы на вопросы из темы интернет-технологии интуит.
- # Какие из приведенных методов объекта-соединения приводят к откату транзакции?
- # Какой из операторов соответствует следующему псевдокоду: 1 0 LOAD_FAST 0 (x) 3 PRINT_ITEM 4 LOAD_FAST 1 (y) 7 PRINT_ITEM 8 PRINT_NEWLINE 9 LOAD_CONST 0 (None) 12 RETURN_VALUE
- # Как начать интерактивную отладку функции f с двумя аргументами (условно: x и y)?
- # Для чего нужны функции модуля gettext?
- # Что из перечисленного правильно характеризует отличия функций в математике от функций в языках программирования?