Вариант 2896981687.
В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)
def f(x, y, z): global d # 1 d[(x, y)] = z # 2 res = len(d) # 3 return res
Как называется отношение, которое имеют следующие два класса:
class A(type): def __init__(cls, name, bases, dict): return super(A, cls).__init__(cls, name, bases, dict) B = A("B", (), {})
Дан массив:
>>>c = array([[1,2], [2,3], [4,5]])
Чему равен срез c[:,1]?
В каких местах допущены ошибки в генераторном выражении, выдающем список координат полей шахматной доски?
(j+str(i) for i in range(1, 9) for j in "abcdefgh")
Какие встроенные функции возвращают в качестве значения словарь (или подобный объект)?
Что обычно делается для возврата более одного значения из функции?
Что произойдет при повторном импорте модуля (в том же блоке кода) оператором import
Какие из перечисленных функций имеют побочные эффекты:
def A(lst): return lambda x: lst + [x] def B(x): return lambda lst: lst + [x] def C(x, cache={}): return cache.setdefault(x, lambda lst: lst + [x])
import os global v v = 0 def A(x, y): return abs(x + y) B = lambda k, v: os.environ.setdefault(k, v) def C(x): global v v = v + 1 return v + x
Может ли возникнуть deadlock в следующей программе:
import threading res_A = threading.Lock() res_B = threading.Lock() res_C = threading.Lock() def proc1(): res_A.acquire(); res_B.acquire(); res_C.acquire() # ... res_B.release(); res_C.release(); res_A.release() def proc2(): res_A.acquire(); res_B.acquire(); res_C.acquire() # ... res_C.release(); res_B.release(); res_A.release() def proc3(): res_A.acquire(); res_B.acquire(); res_C.acquire() # ... res_A.release(); res_B.release(); res_C.release() p1 = threading.Thread(target=proc1, name="t1") p2 = threading.Thread(target=proc2, name="t2") p3 = threading.Thread(target=proc3, name="t3") p1.start(); p2.start(); p3.start() p1.join(); p2.join(); p3.join();