Вариант 1761634795.
Может ли возникнуть deadlock в следующей программе:
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_B.acquire() res_A.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()
Имеются следующие определения:
def m1(self): print("m1") class M: def m2(self): print("m2") m = M()
Какой из фрагментов кода содержит ошибки?
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()
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();
В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)
def f(x): # 1 fc = open("file.txt", "w+") # 2 fc.write(x) # 3 fc.write("\n") # 4 fc.close() # 5
Чему будет равно значение следующего выражения:
import numpy as np print(np.shape(np.array([[1, 2], [3, 4], [5, 6]])))
Какие из приведенных ниже сравнений обязательно дадут True, если объекты x и y имеют одинаковые значения?
Что будет выведено в результате выполнения сопоставления с регулярным выражением?
m = re.match("(a*?)(a+)(b+?)", "aaabbb") print(m.groups())
Какие из перечисленных функций имеют побочные эффекты:
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])
Для чего в регулярном выражении используется "\w"?