0

我正在 Tornado 中编写一个 REST 服务器。我使用ProcessPoolExecutor带有可max_workers配置参数的 a 。但是,问题在于它似乎并没有按照我想要的方式有效地限制进程的数量。代码是

    def post(self):
        ...
        self.process_pool_executor.submit(_execute_scenario_optimization, self.project_name,
                                      self.scenario_name)

        self._generate_output_json_from_dict({"execution_status": "RET_OK"})
        return

submit当池中同时活动的最大进程数大于例如 4 时,我需要生成异常。您有什么想法吗?

4

1 回答 1

1

池执行器限制了一次可以运行的进程数量,但是如果你给它们的任务多于进程,额外的任务只会进入队列而不是引发异常。似乎没有办法限制此队列的大小,因此您可能应该使用信号量来限制添加到队列中的项目数。

于 2020-07-26T15:38:58.620 回答