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

Python多进程是否共享同一对象?,python,multiprocessing,Python,Multiprocessing,我发现了这一点,但我不太明白这是什么意思“因为两个进程执行相同的代码”,我尝试了代码,似乎输出总是相同的 ➜ ~ PythonTest2.py 4419085696 4419085696 ➜ ~ PythonTest2.py 4342830464 4342830464 ➜ ~ PythonTest2.py 4510156160 4510156160 ➜ ~ PythonTest2.py 4329948544 4329948544 ➜ ~ PythonTest2.py 446800422

我发现了这一点,但我不太明白这是什么意思“因为两个进程执行相同的代码”,我尝试了代码,似乎输出总是相同的

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

我在网上也发现了这一点。python多个进程似乎也共享同一个对象


谁能帮我再解释一下?提前谢谢

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

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


请参阅,以获得良好的介绍和更好的解释。

您在哪个操作系统上运行?我使用的是Mac操作系统,我认为两个进程也应该有两个虚拟地址空间,但我在运行两个链接中的代码时感到困惑。该程序产生两个进程,我认为每个进程都应该有自己的对象副本,而不是使用同一个对象。谢谢你的回答,我认为每个进程都有自己的内存。但是当我在上面两个链接中运行python代码时,程序会生成两个进程,并尝试管理同一个对象,这两个进程似乎都处理相同的对象。我真的对此感到困惑,因为我认为每个进程都应该将对象复制到它们自己的内存空间,并处理两个不同的对象。我再三考虑,你的意思是,一个对象的ID在多个进程中可能看起来是相同的,但它们在操作系统中是不同的、孤立的对象。是吗?是的,仅仅因为对象的id在“两个不同的python进程”中是相同的,并不意味着它们是同一个对象。进程不会/不能共享内存,除非您专门为此目的设置了一个特殊的共享内存区,我想您不会这样做。感谢您的帮助,我将尝试一些python代码来测试这一点。