fork启动方式: 子进程会直接使用主进程的资源,但是不会重新执行主进程的代码(if __name__='__main__':之外的代码),子进程会直接执行if __name__='__main__':内的代码,此处的代码为主进程创建子进程要执行的函数 spawn启动方式: 子进程不会直接使用主进程的资源,而是重新执行主进程的代码(if __name__='__main__':之外的代码),然后继续执行if __name__='__main__':内的代码,此处的代码为主进程创建子进程要执行的函数 forkserver启动方式: 先通过spawn启动forkserver进程,然后通过fork启动子进程 forkserver是一个独立的进程,此后需要产生子进程的时候,父进程需要联系该进程 fork 一个子进程。因为 forkserver 本身是一个单线程进程,所以是线程安全的。而且,与 spawn 类似,子进程只会继承必要的资源。
参考:
重新认识 Python(6)多进程编程 - 知乎这一期我们谈谈 Python 的多进程。之前在聊到 GIL 的时候,我们知道 Python 的多线程可以实现并发,但是不能实现并行,因为同一时间只能有一个线程获得 GIL 进行计算。因此,Python 的多线程不能有效利用多个CPU核…https://zhuanlan.zhihu.com/p/358668412深度强化学习是如何利用GPU进行并行计算的? - 知乎教程简介及目录见:从零实现BERT、GPT及Difussion类算法:文章简介及目录上一篇文章我们实现了模型训练需…
https://www.zhihu.com/question/308716947/answer/3146219927