我是Python多处理的新手,但是使用Python非常多。我用python作为
脚本系统多次调用不同的程序(而不是shell脚本)。
假设我有一个带有64个处理器的计算集群,我需要运行一个os.system调用来反复调用外部程序多次,每次都很昂贵。
有没有办法使用多处理来循环我的系统调用?
假设我有以下循环:
我有一个合适的文件名列表。
for i in filenames:
...code to setup new protein system..
os.system("$AMBERHOME/exe/sander -O -i min3.in -o min3.out -p test.prmtop -c test.inpcrd -r min3.rst -ref test.inpcrd")
基本上我的代码脚本设置了一个蛋白质系统,然后一遍又一遍地在新系统上运行琥珀程序。它是串行执行的,并且需要花费很多时间,因为如果有200个结构,对于每个结构,当它调用琥珀色时可能需要30分钟,因此总运行时间为30 * 200分钟。
如果可能的话,我想要的是使用64个处理器 - 也许是一种方式(或者我可以尝试实现某种方式的参考),让我在Python中使用多处理,这样当我有在64个处理器中,我可以通过某种方式完成上述循环,以便每个处理器一次用于64个独立进程(os.system命令),当每个处理器完成时,它会发送一些信号以继续循环为下一个可用的结构。也许某个处理器的某种方式跟踪其他处理器正在进行工作(通过os.system调用)。
这是否可以在群集中使用多处理在python中实现?如果任何人都可以建议一种方法,或者一个有用的参考,以便能够解决这个问题,我将非常感激。谢谢!