multiprocessing的三种启动流程
multiprocessing支持三种启动流程,分别为‘spawn’,‘fork’,“forkserver”
spawn
父进程启动一个新的Python解释器, 子进程将只继承运行run()方法所需的资源。不继承父进程不必要的文件描述符和句柄(一种特殊的只能指针)。与使用fork或forkserver相比,使用此方法启动进程相当慢。在Unix和Windows上可用,Windows上为默认。
fork
父进程使用os.fork()来分叉Python解释器,子进程开始时,与父进程实际上是相同的。父进程所有资源都由子进程继承。这不能保证多线程的安全问题
forkserver
当程序启动并选择forkserver start方法时,将启动服务器进程。从那时起,每当需要新进程时,父进程连接到服务器,并请求它分配一个新进程。叉服务器进程是单线程的,因此它可以安全使用os.fork()。没有不必要的资源被继承。
调用
如果要选择启动方法,必须在主模块中使用set_start_method方法,如:
if __name__ == '__main__':
multiprocessing.set_start_method('spawn')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix