我发现了这个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多个进程共享同一个对象。
任何人都可以帮助解释一下吗?提前致谢。
答案 0 :(得分:2)
CPython中对象的id
是进程本身所见的对象内存地址 。操作系统可以防止不同进程看到其他进程内存。
总简化警告就每个进程而言,其内存空间从0开始上升。启动并从操作系统请求1000字节内存块的两个不同进程都认为它们有内存块0-1000,但它们实际上并不共享内存。
请参阅https://en.wikipedia.org/wiki/Virtual_address_space,了解更好的介绍和更好的解释。