Python多进程是否共享同一个对象?

时间:2018-04-23 09:35:36

标签: python multiprocessing

我发现了这个why multiple processes have the same object id in python,但我不太明白它是什么意思“因为两个进程执行相同的代码”,我尝试代码,似乎输出总是相同的。

➜ ~ python test2.py 4419085696 4419085696 ➜ ~ python test2.py 4342830464 4342830464 ➜ ~ python test2.py 4510156160 4510156160 ➜ ~ python test2.py 4329948544 4329948544 ➜ ~ python test2.py 4468004224 4468004224 ➜ ~ python test2.py 4326647168 4326647168 ➜ ~ python test2.py 4445738368 4445738368 ➜ ~ python test2.py 4388980096 4388980096 ➜ ~ python test2.py 4511999360 4511999360 ➜ ~ python test2.py 4562851200 4562851200 ➜ ~ python test2.py 4535031168 4535031168 ➜ ~ python test2.py 4314420608 4314420608 ➜ ~ python test2.py 4536034688 4536034688

我也在网上找到这个引用http://code.activestate.com/lists/python-list/656748/。似乎python多个进程共享同一个对象。

任何人都可以帮助解释一下吗?提前致谢。

1 个答案:

答案 0 :(得分:2)

CPython中对象的id是进程本身所见的对象内存地址 。操作系统可以防止不同进程看到其他进程内存。

总简化警告就每个进程而言,其内存空间从0开始上升。启动并从操作系统请求1000字节内存块的两个不同进程都认为它们有内存块0-1000,但它们实际上并不共享内存。

请参阅https://en.wikipedia.org/wiki/Virtual_address_space,了解更好的介绍和更好的解释。