I want to have two processes, one writing and one reading on/from the same variable. The data written is like this: [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] But I'm having trouble because the reading process is reading between the variable change, forming new pairs, so I want to use a Lock/Mutex to prevent this from happening again. I guess I'd have to lock the object before changing it. OBS: The object is shared between processes using a manager. Here is the main code: 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() As you can see I tried to lock and unlock the variable in the writing process but the result still was mixed up. What am I doing wrong? Continue reading...