Python:joblib在通过bash脚本运行时冻结(仅限)

2024-04-19 06:45:56 发布

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

我通过SSH连接到一个集群,在集群上运行Python脚本以实现数据科学目的,其中一些脚本被并行化。在

我使用两种方法在集群上执行脚本:

  • PyCharm部署和远程对讲机(端口转发+隧道)。

  • 从bash脚本执行。

当我在PyCharm或使用bash脚本运行代码时,它运行得很顺利,但只运行在非常小的数据集上。当我使用bash脚本在更大的数据集(=>;更大数量的任务)上运行它时,它会在接近任务结束时冻结。没有显示错误/警告,只是并行计算被卡住了(示例如下)。问题总是发生在最后一个任务上,是应该完成1000个任务,还是100000个任务——这无关紧要。在

...
[Parallel(n_jobs=32)]: Done 4889 tasks      | elapsed:   50.1s
[Parallel(n_jobs=32)]: Done 4890 tasks      | elapsed:   50.1s
[Parallel(n_jobs=32)]: Done 4891 tasks      | elapsed:   50.1s
[Parallel(n_jobs=32)]: Done 4892 tasks      | elapsed:   50.1s
[Pa

Python脚本要点:

并行化命令的格式为:

^{pr2}$

参数和函数包括numpy&pandas数组。在

我使用的bash脚本:

#!/bin/sh

/storage/home/username/.conda/envs/conaenv/bin/python2.7 /storage/home/username/script.py 2>&1  | tee /storage/home/username/log.txt

exit 0

为了解决这个问题,我试着:

  • 同时使用joblib和multiprocessing(两者都会出现问题)。

  • 指定超时以退出并行计算并仅捕获部分结果,但对超时没有响应。

  • 尝试/捕获并行化函数中的任何错误,但未捕获错误。

  • 正在将joblib环境变量“joblib”START“METHOD”设置为“forkserver”。

有什么想法吗?谢谢!在


Tags: 数据脚本bashhomeparallel错误jobsusername