2012年4月1日星期日

线程和进程的区别

进程好像有一种copy on write的性质,线程总是共享内存。

from multiprocessing import Process
from threading import Thread

class A(Process):
    def __init__(self):
        Process.__init__(self)
        self.done = 1

    def run(self):
        print self.done, id(self.done)
        self.done += 1
        print self.done, id(self.done)


class B(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.done = 1

    def run(self):
        print self.done, id(self.done)
        self.done += 1
        print self.done, id(self.done)

if __name__ == '__main__':    a=A()
    a.start()
    a.join()
    print a.done, id(a.done)
    b=B()
    b.start()
    b.join()
    print b.done, id(b.done)


结果:
1 90612360
2 90612336
1 90612360
1 90612360
2 90612336
2 90612336

坑啊。。(每当此时,我就格外怀念Erlang。。。)

1 条评论:

broom9 说...

线程和进程区别是操作系统课的必考题目。。