首页 > 解决方案 > 使用多处理池时,在 Docker 中运行 python 会卡住

问题描述

我在 Docker 容器内使用 scipy.optimize.differential_evolution 函数,参数 workers=-1 传递给它。这可以使用 Python 的多处理库(它使用池)以最大数量的可用 CPU 进行并行处理。查看 Scipy 源代码,当提供参数 workers=-1 时, multiprocessing.Pool() 在幕后调用,没有任何参数。从而使用可用的最大 CPU 内核数。

每次迭代,都会打印一条消息。运行容器时,前几次迭代似乎正常工作。但是,在某些时候,python 脚本似乎卡住了,因为没有打印新的输出(并且我电脑上的风扇关闭了......)。发生这种情况时不会打印任何错误。

请注意,当我删除或将 workers 参数更改为 4 时,一切都按预期工作并且执行不会卡住。(我的电脑有 8 个核心。)

我曾尝试增加分配给 Docker 的内存,但不幸的是这并没有帮助。

如果有什么我应该扩展的,请告诉我。谢谢

标签: pythondockerpython-multiprocessingscipy-optimize

解决方案


推荐阅读