【发布时间】:2021-01-13 15:56:15
【问题描述】:
我正在阅读python doc中对两者的描述:
生成
父进程启动一个新的 python 解释器进程。子进程将仅继承运行进程对象 run() 方法所需的那些资源。特别是,不会继承父进程中不必要的文件描述符和句柄。与使用 fork 或 forkserver 相比,使用这种方法启动进程相当慢。 [适用于 Unix 和 Windows。 Windows 和 macOS 上的默认设置。]
分叉
父进程使用 os.fork() 来分叉 Python 解释器。子进程在开始时实际上与父进程相同。父进程的所有资源都由子进程继承。请注意,安全地分叉多线程进程是有问题的。 [仅在 Unix 上可用。 Unix 上的默认值。]
我的问题是:
- 是因为分叉更快,因为它不会尝试识别要复制的资源吗?
- 是不是因为 fork 复制了所有内容,与 spawn() 相比,它会“浪费”更多的资源?
【问题讨论】:
-
fork 由于写时复制而速度很快。 spawn 需要构建一个全新的进程
标签: python multiprocessing fork python-multiprocessing spawn