from multiprocessing import Process, Lock, current_process
import requests as r
def get(lista, lista_lock):
lista_lock.acquire()
print(f"PID: {current_process().name} ID liste: {id(lista)}")
temp = lista[:1]
del lista[:1]
lista_lock.release()
res = r.get(*temp)
print(f"PID: {current_process().name} -> {res.url}")
if __name__ == "__main__":
lista = ["https://www.index.hr", "https://www.24sata.hr"]
lista_lock = Lock()
p1 = Process(target=get, args=(lista, lista_lock))
p2 = Process(target=get, args=(lista, lista_lock))
p1.start()
p2.start()
p1.join()
p2.join()
print(f"lista ID: {id(lista)}")
В результате я получаю ...
PID: Process-1 ID liste: 140292127163144
PID: Process-2 ID liste: 140292127163144
PID: Process-1 -> https://www.index.hr/
PID: Process-2 -> https://www.index.hr/
lista ID: 140292127163144
Каждый процесс должен был получить разные ссылки, но они получили одинаковые. Кажется, замок не работает. Может кто-нибудь, пожалуйста, помогите мне.
У меня есть еще 1 вопрос относительно ID "lista". Если это разные процессы, почему они имеют одну и ту же переменную "lista"? Я думал, что каждый процесс получает свою собственную копию данных.