在Windows中使用多处理来加快进程的启动

时间:2018-07-06 13:47:00

标签: python python-3.x multiprocessing

我有一个使用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上额外进程的创建? (不是选择使用线程而不是多个进程)

1 个答案:

答案 0 :(得分:0)

我强烈建议不要使用concurrent.futures ProcessPoolExecutor,而要使执行程序在后台处于打开状态,而不是每次都创建多个新进程。

那样,您不必每次都创建一个新进程,而是让它们在后台保持打开状态,并使用模块的功能或队列和管道来传递一些工作。

底线-请勿每次都创建新流程。让他们打开并通过工作。