python多处理池:进程生成主应用程序的新副本

2024-09-28 17:02:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个更大的Python应用程序,它在几百个不同的问题场景中运行一个解算器。有一个GUI允许用户设置解算器配置。为了加速这个过程,我实现了一个多处理池来在应用程序中生成求解器模块的新实例。在

最终发生的是,在创建池的过程中,出现了四个GUI的新副本,这完全不是我所希望的。我已经按照编程指南采取了我认为适当的步骤来保护应用程序的入口点,但也许我误解了多处理模块的一些基本原理。在

我遵循了this thread中创建最小启动模块的指导原则。在

在ScenarioSolver.solveOneScenario创建解算器的新实例,方案“从”到“解算”是参数列表。在

process_pool = multiprocessing.Pool(4)
for _, result in enumerate(process_pool.imap_unordered(ScenarioSolver.solveOneScenario, scenarios_to_solve)):
  self.processResult(result)

那么,根据这里有限的信息,我在使用池时可能忽略了什么?在

编辑:只有当我使用py2exe将应用程序打包到可执行文件中时,才会发生这种行为。从eclipse运行时,我得到了预期的行为。在


Tags: 模块实例用户应用程序过程编程场景副本