使用多处理发送/接收系统调用

2024-10-17 06:29:36 发布

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

我不熟悉Python多处理,但经常使用Python。我使用python来
脚本系统多次调用不同的程序(而不是shell脚本)。在

假设我有一个有64个处理器的计算集群,我需要运行一个操作系统调用多次调用外部程序,每次都很昂贵。在

有没有一种方法可以使用多处理来循环我的系统调用?在

假设我有以下循环:

我有一个合适的文件名列表。在

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个结构,那么对于每个结构,当它调用amber时,可能需要30分钟,因此总运行时间是30*200分钟。在

如果可能的话,我想要的是使用64个处理器——也许是一种方法(或者是对我可以尝试实现方法的引用)来使用Python中的多处理,这样当我有64个处理器时,我可以在某种程度上遍历上面的循环,以便每个单独的处理器用于64个独立的进程(操作系统命令)一次执行,当每个操作完成时,它发送一些信号以继续下一个可用结构的循环。通过其他处理器的工作方式操作系统电话)。在

这是不是可以在python中使用集群上的多处理来实现呢?如果有人能建议一种方法,或是一个有用的参考资料,以便能够解决这个问题,我将非常感激。谢谢!在


Tags: 方法intest程序脚本文件名系统方式