我想要两个过程,一个写入,一个读取/从同一变量读取。写入的数据如下所示:
[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]
但是我遇到了麻烦,因为读取过程是在变量变化之间读取,形成新的对,所以我想使用Lock/Mutex来防止这种情况再次发生。我想我必须在更改对象之前锁定它。OBS:使用管理器在进程之间共享对象。
下面是主代码:
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()
如您所见,我试图在编写过程中锁定和解锁变量,但结果仍然很混乱。我做错了什么?
慕标5832272
相关分类