为多进程创建的进程提供明确的环境映射
作者: K0u1e创建于 2026年9月16日更新于 2026年9月17日
标签type-featurestdlibtopic-multiprocessing
如果您运行 Python test.py,您将得到:
round 1: {0: 32}
round 2: {0: 32}
round 3: {0: 32}
round 4: {0: 31, "BrokenPipeError(32, 'Broken pipe')": 1}
如果您使用 --no-environment-updates,子进程将成功创建。
round 1: {0: 32}
round 2: {0: 32}
round 3: {0: 32}
round 4: {0: 32}
round 5: {0: 32}
round 6: {0: 32}
round 7: {0: 32}
round 8: {0: 32}
round 9: {0: 32}
round 10: {0: 32}
round 11: {0: 32}
round 12: {0: 32}
round 13: {0: 32}
round 14: {0: 32}
round 15: {0: 32}
round 16: {0: 32}
round 17: {0: 32}
round 18: {0: 32}
round 19: {0: 32}
round 20: {0: 32}
在我的 Linux 上的测试中,multiprocessing 的 "spawn" 启动方法遵循 vfork() + execv() 路径。子进程共享父进程的地址空间,直到它成功执行新程序或终止。在此期间,父进程中的其他线程可以继续修改进程环境。
内容来源: python/cpython