Tim Peters <t...@python.org> added the comment:
Weird. If I insert these between the two process starts: import time time.sleep(2) then the producer produces the expected output: at start: 666 at producer start: 666 and the program blows up instead when it gets to print("in consumer:", self.val.value) Same thing if, instead of a sleep, I put producerprocess.join() before starting the consumer. If I change the tail end to: producerprocess.start() import time time.sleep(2) print(state_value) consumerprocess = MyConsumer(state_value, state_ready) consumerprocess.start() then I see at start: 666 at producer start: 666 Value('i', 42) before it blows up in the consumer. So `state_value` appears to survive intact, and mutated as intended, across the producer's life - but gets corrupted somehow when it's _also_ passed to the consumer. Weirder ;-) , if I replace the tail with the ever-more elaborate: producerprocess = MyProducer(state_value, state_ready) producerprocess.start() import time time.sleep(2) producerprocess.join() print(state_value) state_value.value = 13 producerprocess = MyProducer(state_value, state_ready) producerprocess.start() time.sleep(2) producerprocess.join() print(state_value) consumerprocess = MyConsumer(state_value, state_ready) consumerprocess.start() then I see at start: 666 at producer start: 666 Value('i', 42) at producer start: 13 Value('i', 42) before it blows up in the consumer - so it survived two full producer lifetimes! So ... generalize ... change the tail to: for i in range(10): state_value.value = i producerprocess = MyProducer(state_value, state_ready) producerprocess.start() producerprocess.join() print(state_value) consumerprocess = MyConsumer(state_value, state_ready) consumerprocess.start() and I see everything working fine before it blows up in the consumer: at start: 666 at producer start: 0 Value('i', 42) at producer start: 1 Value('i', 42) at producer start: 2 Value('i', 42) at producer start: 3 Value('i', 42) at producer start: 4 Value('i', 42) at producer start: 5 Value('i', 42) at producer start: 6 Value('i', 42) at producer start: 7 Value('i', 42) at producer start: 8 Value('i', 42) at producer start: 9 Value('i', 42) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41660> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com