Вариант 2045118331.
Может ли возникнуть 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_B.acquire(); res_C.acquire(); res_A.acquire() # ... res_C.release(); res_B.release(); res_A.release() def proc3(): res_C.acquire(); res_A.acquire(); res_B.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();
С помощью какого из приведенных ниже сравнений можно установить, что x и y — это один и тот же объект?
Каким из приведенных ниже способов можно привести латинские символы строки s к нижнему регистру?
Что будет выведено следующей программой?
a = "A" b = "B" a, b = b + a print(a + b)
Какие из приведенных ниже сравнений обязательно дадут True, если объекты x и y имеют одинаковые значения?
import threading res_A = threading.Lock() res_B = threading.Lock() def proc1(): res_A.acquire() res_B.acquire() # ... res_B.release() res_A.release() def proc2(): res_A.acquire() res_B.acquire() # ... res_B.release() res_A.release() p1 = threading.Thread(target=proc1, name="t1") p2 = threading.Thread(target=proc2, name="t2") p1.start() p2.start() p1.join() p2.join()
Из какого модуля будет работать функция split() в следующем примере:
from sre import * from string import * split('a', 'b')
Что произойдет со старыми объектами модуля, используемыми в программе, при его перезагрузке по reload() (после изменения на диске):
import mdl a = mdl.a b = mdl.b() reload(mdl)
В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)
def f(x, y, z): global d1, d2 # 1 d1[(x, y)] = z # 2 d2[z] = (x, y) # 3 res = len(d2) # 4 return res
Имеется следующий массив:
b = array([[1, 2], [0, 1]])
Какие из приведенных ниже операций получения среза вызовут ошибку?