我有一个使用Python的机器学习应用程序。而且我正在Python中使用multiprocessing
模块来并行化某些工作(特别是特征计算)。
现在,multiprocessing
在Unix变体和Windows操作系统上的工作方式有所不同。
Unix (mac/linux):
fork / forkserver / spawn
Windows:
产生物
Why multiprocessing.Process behave differently on windows and linux for global object and function arguments
由于spawn
在Windows上使用,因此多处理进程的启动确实很慢。它会为Windows上的每个进程从头开始加载所有模块。
有没有一种方法可以加快Windows上额外进程的创建? (不是选择使用线程而不是多个进程)
答案 0 :(得分:0)
我强烈建议不要使用concurrent.futures ProcessPoolExecutor
,而要使执行程序在后台处于打开状态,而不是每次都创建多个新进程。
那样,您不必每次都创建一个新进程,而是让它们在后台保持打开状态,并使用模块的功能或队列和管道来传递一些工作。
底线-请勿每次都创建新流程。让他们打开并通过工作。