Я хочу иметь два процесса, один написание и одно чтение на/из одной и той же переменной. Написанные данные подобны следующим образом: < /p>
[0, 0]
[0, 1]
[1, 0]
[1, 1]
[2, 0]
[2, 1]
[3, 0]
[3, 1]
[4, 0]
[4, 1]
[5, 0]
[5, 1]
[6, 0]
[6, 1]
[7, 0]
[7, 1]
[8, 0]
[8, 1]
[9, 0]
[9, 1]
< /code>
Но у меня проблемы, потому что процесс чтения читает между изменением переменной, формируя новые пары, поэтому я хочу использовать блокировку /мутекс, чтобы предотвратить это снова. Я думаю, что мне придется заблокировать объект, прежде чем изменить его.
OBS: объект передается между процессами с использованием менеджера. < /p>
Вот основной код: < /p>
import multiprocessing
def mde(dad, mutex):
for i in range(10):
for j in range(2):
mutex.acquire()
dad[0] = i
dad[1] = j
mutex.release()
def mda(dad):
c = 0
while c < 30:
print(dad)
c += 1
if __name__ == '__main__':
manager = multiprocessing.Manager()
mutex = manager.Lock()
dado = manager.list([0, 0])
p1 = multiprocessing.Process(target=mde, args=(dado, mutex,))
p2 = multiprocessing.Process(target=mda, args=(dado,))
p1.start()
p2.start()
p1.join()
p2.join()
< /code>
Как видите, я пытался заблокировать и разблокировать переменную в процессе написания, но результат все еще был смешан. Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/602 ... processing
Как использовать блокировку как мутекс в многопроцестрой? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение