扭矩 PBS - 运行 几个串行 Python 过程
Torque PBS - running several serial Python processes
我第一次想做一些并行计算,但我不知道应该从哪里开始。
问题是我有一个巨大的文件列表(大约 7000 个 csv 文件)我想处理并从数据中获取一个文件。对于此任务,我想使用与 Torque PBS 配合使用的校园集群。
到目前为止,我在 SO 中找到的最接近我想要实现的问题是 this one。主要区别在于我应该使用 Torque(真的吗?)。
所以,简而言之,我的问题是:我如何使用 Torque PBS 实现所引用问题的解决方案?
好吧,我设法通过以下方式做到了:
假设有一个名为 process.py
的 python 串行进程,它一次处理 100 个 csv 文件。
然后我们需要一个文件 call_pyprocess.pbs
,它使用以下语法调用 process.py
:
#!/bin/bash
#PBS -l nodes=1:ppn=1
#PBS -o out.varx
#PBS -e error.varx
source activate p2.7 """ if need to specify python environment """
python /path/to/file/process.py varx """ varx is the iteration number """
请注意,process.py
文件需要参数解析器才能将 varx
用作内部变量。
然后使用以下命令从 bash 发送作业:
for i in {00..70} ; do cp call_pyprocess.pbs temp.pbs ;
perl -pi -e "s/varx/$i/" temp.pbs; qsub temp.pbs; done
我第一次想做一些并行计算,但我不知道应该从哪里开始。
问题是我有一个巨大的文件列表(大约 7000 个 csv 文件)我想处理并从数据中获取一个文件。对于此任务,我想使用与 Torque PBS 配合使用的校园集群。
到目前为止,我在 SO 中找到的最接近我想要实现的问题是 this one。主要区别在于我应该使用 Torque(真的吗?)。
所以,简而言之,我的问题是:我如何使用 Torque PBS 实现所引用问题的解决方案?
好吧,我设法通过以下方式做到了:
假设有一个名为 process.py
的 python 串行进程,它一次处理 100 个 csv 文件。
然后我们需要一个文件 call_pyprocess.pbs
,它使用以下语法调用 process.py
:
#!/bin/bash
#PBS -l nodes=1:ppn=1
#PBS -o out.varx
#PBS -e error.varx
source activate p2.7 """ if need to specify python environment """
python /path/to/file/process.py varx """ varx is the iteration number """
请注意,process.py
文件需要参数解析器才能将 varx
用作内部变量。
然后使用以下命令从 bash 发送作业:
for i in {00..70} ; do cp call_pyprocess.pbs temp.pbs ;
perl -pi -e "s/varx/$i/" temp.pbs; qsub temp.pbs; done