python字典总是重置为零

时间:2014-12-23 08:16:24

标签: python

这是我的代码:

class tclass:
    value = 0
    lo = multiprocessing.Lock()
    def increase(self):
        print 'befor',self.value
        with self.lo:
            self.value+=1
        print 'after',self.value


tc = tclass()

def starttclassvalue():
    for i in range(10):
        tc.increase()

if __name__ == '__main__':
    multiprocessing.process.Process(target=starttclassvalue).start()
    multiprocessing.process.Process(target=starttclassvalue).start()
    multiprocessing.process.Process(target=starttclassvalue).start()
    multiprocessing.process.Process(target=starttclassvalue).start()

为什么值设置为零并从零开始?

out:

befor 0 1之后 1 2之后 2 3之后 因为3 4点之后 4 5点以后 5 6点以后 因为6 7点之后 因为7 8点以后 因为8 9点以后 因为9 10点以后 因为0 1之后 1 2之后 2 3之后 因为3 4点之后 4 5点以后 5 6点以后 因为6 7点之后 因为7 8点以后 因为8 9点以后 因为9 10点以后 因为0 1之后 1 2之后 2 3之后 因为3 4点之后 4 5点以后 5 6点以后 因为6 7点之后 因为7 8点以后 因为8 9点以后 因为9 10点以后 因为0 1之后 1 2之后 2 3之后 因为3 4点之后 4 5点以后 5 6点以后 因为6 7点之后 因为7 8点以后 因为8 9点以后 因为9 10点之后

为什么tclass中的值在结束程序中不是30?

1 个答案:

答案 0 :(得分:1)

使用父进程的内存的COPY创建新进程。对任何子进程的内存的更改不会影响父进程。那个记忆不是共享的。您可以通过使用线程(共享父进程的相同内存)而不是多处理库来实现您想要的功能。